我构建了一个监听sales_convert_quote_to_order事件的观察者.事件被触发,我只想为订单的属性添加值.该属性已设置 – 打印在日志中 – 但magento不保存订单.我做错了什么?
Observer.php
public function addLangToOrder($observer){ Mage::log('catching convert_quote_to_order_after'); $order = $observer->getEvent()->getOrder(); $order->setCustomerLanguage(Mage::app()->getStore()->getCode()); $order->save(); Mage::log($order->getCustomerLanguage()); }
config.xml中
<events> <sales_convert_quote_to_order> <observers> <accustomer> <type>singleton</type> <class>Ac_Customer_Model_Observer</class> <method>addLangToOrder</method> </accustomer> </observers> </sales_convert_quote_to_order> </events>
我通过安装脚本添加了属性customer_language
$customer_lang = 'customer_language'; $installer->addAttribute('order',$customer_lang,array('type'=>'varchar'));
customer_language列存在于sales_flat_order表中.但它没有得到保存.
我正在使用Magento 1.4.1.1
您需要将属性添加到报价和销售模型中才能使其正常工作.
由于Magento会将一个定义的< fieldset> *从引用复制到订单,因此您还需要相应地扩展覆盖类的config.xml:
<config> <!-- : --> <global> <fieldsets> <sales_convert_quote> <customer_language><to_order>*</to_order></customer_language> </sales_convert_quote> </fieldsets> </global> <!-- : --> </config>
*请参阅Mages_Sales的config.xml
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。