通过订购的Magento产品循环

时间:2015-09-02 19:53:00

标签: magento

我正在尝试创建一个简单地循环遍历订购产品的扩展程序。我对Magento非常陌生。我设置了所有内容,并通过将其it worked记录到我的系统日志来测试它。现在每当我尝试将其更改为实际循环产品时,我都会遇到一个奇怪的错误:

2015-09-02T19:47:55+00:00 ERR (3): User Error: Some transactions have not been committed or rolled back  in C:\xampp\htdocs\magento\lib\Varien\Db\Adapter\Pdo\Mysql.php on line 4039

这是我的观察者:

<?php
class Test_Productorderlog_Model_Observer {

     public function sales_order_place_after(Varien_Event_Observer $observer)
     {
         $order = $observer->getEvent()->getOrder();

         foreach ($order->getAllItems() as $item) {
            $product = $item->getProduct();
            Mage::log($product , null , 'system.log');
    }
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在这种情况下,我建议事件checkout_submit_all_after。据我所知,当您使用 Multishipping 下订单时会触发sales_order_place_after,但checkout_submit_all_after将始终被触发。

<global>
<events>
        <checkout_submit_all_after>
            <observers>
                <myaction_save_order>
                    <class>test_productorderlog/observer</class>
                    <method>sales_order_place_after</method>
                </myaction_save_order>
            </observers>
           </checkout_submit_all_after>
    </events>
</global>

并使用

<?php
class Test_Productorderlog_Model_Observer {

     public function sales_order_place_after(Varien_Event_Observer $observer)
     {
         $order = $observer->getEvent()->getData('order');

         foreach ($order->getAllItems() as $item) {
            $product = $item->getProduct();
            Mage::log(print_r($product,true) , null , 'myorderedproducts.log');
    }
}
相关问题