【问题标题】:magento custom order attribute value not savingmagento 自定义订单属性值不保存
【发布时间】:2014-10-31 05:05:33
【问题描述】:

我使用安装程序脚本为订单和报价创建了一个属性。这些可以在 entity_attribute 表中看到。在结帐时,我想设置值并将其与订单一起保存。我创建了一个事件和观察者函数。但价值不会节省。请帮忙。

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

谁能帮我解决这个问题。我不明白我在哪里弄错了。

谢谢

【问题讨论】:

    标签: magento


    【解决方案1】:

    我认为您缺少 save 方法

    你必须改变你的观察者代码如下

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

    因此它将保存您的订单更新值。

    希望对你有帮助

    【讨论】:

    • 您好,谢谢您的回复。早些时候我添加了 save() 但后来我收到一个错误,说内存超出:( 我应该怎么做。在我的 php.ini 中,内存已设置为 168M
    • 您可以将其增加到 256M512M 可能对您有用。另请参阅我的更新代码。
    • 它不工作。有没有其他解决办法。我想要的是在结帐时保存订单属性值。任何帮助...
    • 您是否在实际观察者中获取订单信息?比如订单号和所有
    • 是的,订单信息正在获取,它们也在保存
    【解决方案2】:

    您的 order->save() 会返回到 sales_order_save_after 并进行无限循环。试试这个,我添加了一个注册表项,这样它就不会在您的 order->save() 调用后保存属性和订单

    public function saveLocationOrderattributes($observer){
            if(!Mage::registry('afterOrderSave'))
            {
                Mage::register('afterOrderSave');
                $event = $observer->getEvent();
                $order = $event->getOrder();
                $order->setLocation('1');
                $order->save();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多