我正在尝试创建一个简单地循环遍历订购产品的扩展程序。我对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');
}
}
非常感谢任何帮助。
答案 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');
}
}