Magento在签出时添加注释
我试图让我的客户对他们的订单添加评论。所以我搜索了一个分机,找到了一个。设置似乎很简单。。。 您只需确保在checkout.xml中加载了一个块Magento在签出时添加注释,magento,Magento,我试图让我的客户对他们的订单添加评论。所以我搜索了一个分机,找到了一个。设置似乎很简单。。。 您只需确保在checkout.xml中加载了一个块 <block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/> 我认为缺少了一些东西,因为类缺少方法getMyOrderRecustomCo
<block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/>
我认为缺少了一些东西,因为类缺少方法getMyOrderRecustomComment。或者该方法是自动生成的
MyCompany_MyOrder_Helper_CustomerOrderComment extends Mage_Core_Helper_Abstract {
public function setCustomerOrderComment($observer) {
$orderComment = $this->_getRequest()->getPost(‘myCustomerOrderComment’, false);
$observer->getEvent()->getOrder()->setMyorderCustomercomment($orderComment);
}
}
更新:
配置文件:
<?xml version="1.0"?>
<config>
<global>
<modules>
<MyCompany_MyOrder>
<version>0.1.0</version>
</MyCompany_MyOrder>
</modules>
<helpers>
<myorder>
<class>MyCompany_MyOrder_Helper</class>
</myorder>
</helpers>
</global>
<frontend>
<events>
<checkout_type_onepage_save_order>
<observers>
<myorder_set_customerordercomment>
<type>model</type>
<class>MyCompany_MyOrder_Helper_CustomerOrderComment</class>
<method>setCustomerOrderComment</method>
</myorder_set_customerordercomment>
</observers>
</checkout_type_onepage_save_order>
</events>
</frontend>
</config>
0.1.0
MyCompany\u MyOrder\u助手
模型
我的公司\我的订单\助手\客户订单指令
setCustomerOrderComment
助手:
<?php
class MyCompany_MyOrder_Helper_CustomerOrderComment extends Mage_Core_Helper_Abstract {
public function setCustomerOrderComment($observer) {
$orderComment = $this->_getRequest()->getPost('myCustomerOrderComment', false);
mail('my@email.com', 'TestMail', $orderComment);
$observer->getEvent()->getOrder()->setMyorderCustomercomment($orderComment)->save();
}
}
您必须在phtml文件中创建一个订单属性并放置字段。这里有一个详细的博客,您可以尝试:
更新
打开数据库并打开eav_属性表-在属性代码字段中搜索myorder_customercomment。如果存在记录,则脚本将成功执行
SetMyOrderUserComment仅设置用户在创建的属性中输入的注释。Magento提供了神奇的方法(get和set),所以您不需要重新定义getMyOrderUserComment()方法
当您执行echo$\u order->getmyorderrcustomcomment()时;若您的属性创建成功,magento将自动从数据库中获取其值并回显
本文指定set方法的原因是,您可以从各种文件访问该方法,而无需重复代码。您可以避免指定该函数,只需编写$order->setMyOrderRecustomComment($orderComment)->save();它会起作用的
在此处阅读有关magento魔术方法的更多信息:
回答您的问题:
您如何调用该函数?应该这样调用它:Mage::helper('modulename')->setCustomerOrderComment($arguments);
确保将上述语句中的modulename替换为实际的模块名
如果您的函数位于observer文件中,则在触发checkout\u type\u onepage\u save\u order事件后将自动调用该函数。因此,请检查您在何处编写了函数助手文件或观察者文件,并提供这些函数中哪些未被调用的适当详细信息。如果未调用observer函数,则必须检查下订单时触发的事件。由于评论中的字符限制,我无法在评论部分发布此内容,因此更新了我的答案
希望这有帮助 eav\u属性中存在属性代码“myorder\u customercomment”。是否有方法检查数据库中是否设置了字段?因为我认为实际的问题是,我不知道我是否不能加载属性或者属性是否没有设置。我甚至尝试在这个功能中发送电子邮件,但我没有收到电子邮件。我试图回显该值,但没有得到任何结果,因此我猜测没有加载函数来保存属性:$\u order=Mage::getModel('sales/order')->load(10000608);echo$_order->GetMyOrderRecustomComment();是否有方法检查函数是否运行?Load用于按实体id加载订单。您是按增量id加载的,因此请尝试以下操作:$\u order=Mage::getModel('sales/order')->loadByIncrementId(10000608)$_订单->GetMyOrderRCUSTOMERCOMENT();查看是否在销售订单中创建了列myorder\u customercomment。如果没有列,则使用文本类型创建1。然后清除所有缓存,将客户注释保存在订单中,然后在sales\u flat\u order表的myorder\u customer comment列中检查与订单对应的值。查看此链接以了解如何正确创建订单属性:通过getMyOrderComment()加载模型并获取值非常有效。但它仍然不是自动设置的。再次回到我的问题:MyCompany\u MyOrder\u Helper\u CustomerOrderComment类中的函数setCustomerOrderComment没有被加载。我试图通过这个功能向我发送电子邮件,但没有成功。如何测试它?根本不调用该函数。我以为当有人完成订单时,配置文件会自动执行该操作?我更新了我的问题,因此您可以看到这两个文件。当您在config.xml中编写它时,相应的函数应该在MyCompany/MyOrder/Model/Observer.php文件中。Magento无法在observer文件中找到任何内容,因此不会发生任何事情。您正在帮助文件中编写代码。在帮助文件中写入任何内容时,必须显式调用该函数。在observer.php中编写代码,应该可以正常工作
<?php
class MyCompany_MyOrder_Helper_CustomerOrderComment extends Mage_Core_Helper_Abstract {
public function setCustomerOrderComment($observer) {
$orderComment = $this->_getRequest()->getPost('myCustomerOrderComment', false);
mail('my@email.com', 'TestMail', $orderComment);
$observer->getEvent()->getOrder()->setMyorderCustomercomment($orderComment)->save();
}
}