Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento在签出时添加注释_Magento - Fatal编程技术网

Magento在签出时添加注释

Magento在签出时添加注释,magento,Magento,我试图让我的客户对他们的订单添加评论。所以我搜索了一个分机,找到了一个。设置似乎很简单。。。 您只需确保在checkout.xml中加载了一个块 <block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/> 我认为缺少了一些东西,因为类缺少方法getMyOrderRecustomCo

我试图让我的客户对他们的订单添加评论。所以我搜索了一个分机,找到了一个。设置似乎很简单。。。 您只需确保在checkout.xml中加载了一个块

<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();
    }
}