magento自定义订单属性值不保存
问题描述:
我使用安装程序脚本为订单和报价创建了一个属性。这些可以在entity_attribute表中看到。在结帐时,我想设置价值并将其与订单一起保存。我创建了一个事件和观察者函数。但价值不会节省。请任何帮助。magento自定义订单属性值不保存
config.xml中
<sales_order_save_after>
<observers>
<clickandcollect_save_location_orderattributes>
<type>model</type>
<class>Balance_Clickandcollect_Model_Observer</class>
<method>saveLocationOrderattributes</method>
</clickandcollect_save_location_orderattributes>
</observers>
</sales_order_save_after>
Observer.php
public function saveLocationOrderattributes($observer){
$event = $observer->getEvent();
$order = $event->getOrder();
//$quote = $event->getQuote();
$order->setLocation('1');
}
谁能帮我解决这个问题。我不明白我犯了什么错误。
谢谢
答
我认为你缺少保存方法
你必须改变你的观察代码如下
public function saveLocationOrderattributes($observer){
$event = $observer->getEvent();
$order = $event->getOrder();
//$quote = $event->getQuote();
//or load the order
$order_id = $order->getId();
$order = Mage::getModel('sales/order')->load($order_id);
$order->setLocation('1');
$order->save();
}
这样可以节省您的订单更新值。
希望这将帮助你
答
你的命令 - >保存()返回sales_order_save_after,使一个无限循环。试试这个,我添加了一个注册表项,所以它不会在你的订单 - > save()调用后保存属性和顺序
public function saveLocationOrderattributes($observer){
if(!Mage::registry('afterOrderSave'))
{
Mage::register('afterOrderSave');
$event = $observer->getEvent();
$order = $event->getOrder();
$order->setLocation('1');
$order->save();
}
}
嗨,谢谢你的回复。之前我添加了save(),但是后来出现了一个错误,说内存超出了:(我该怎么做。在我的php.ini内存中已放置为168M – KNKM 2014-10-31 05:18:20
,您可以将它增加到256M或512M为你工作,也见我的更新代码 – liyakat 2014-10-31 05:19:24
它不工作。是否有任何其他解决方案。我想要的是保存订单属性值在结帐。任何帮助... – KNKM 2014-10-31 05:35:59