2015-06-10 60 views
1

我试图从观察者的产品中获取自定义属性。 我有以下几点:从观察者订单对象获取产品的自定义属性Magento

public function export_new_order($observer){ 
    $orderIds = $observer->getData('order_ids'); 
    foreach($orderIds as $_orderId){ 
     $order  = Mage::getModel('sales/order')->load($_orderId); 
     Mage::log($order->debug()); 
    } 
} 

的正常工作,我在日志中得到一个不错的print_r。
但是,当我尝试获取物品时,它不起作用。

我尝试这样做:

public function export_new_order($observer){ 
    $orderIds = $observer->getData('order_ids'); 
    foreach($orderIds as $_orderId){ 
     $order  = Mage::getModel('sales/order')->load($_orderId); 
     Mage::log($order->debug()); 
     $items = $order->getAllItems(); 
     Mage::log($items->debug()); 
    } 
} 

而且这样的:

$items = $order->getAllVisibleItems(); 
Mage::log($items->debug()); 

但这些都不工作,我得到一个白色的屏幕,每当我点击 “下订单”

<?xml version="1.0"?> 
<config> 
<modules> 
    <Feed_Sales> 
     <version>0.0.1</version> 
    </Feed_Sales> 
</modules> 
<global> 
    <models> 
     <feedsales> 
      <class>Feed_Sales_Model_Order_Observer</class> 
     </feedsales> 
    </models> 
    <events> 
     <checkout_onepage_controller_success_action> 
      <observers> 
       <feed_sales_model_order_observer> 
        <type>singleton</type> 
        <class>Feed_Sales_Model_Order_Observer</class> 
        <method>export_new_order</method> 
       </feed_sales_model_order_observer> 
      </observers> 
     </checkout_onepage_controller_success_action> 
    </events> 
</global> 

回答

1

我相信,你得到的项目就好了,问题是其他地方。集合没有调试方法,所以如果你看看你的服务器日志,很可能你会发现一个错误。

所以,如果你要调试的项目,你应该做这样的事情:

public function export_new_order($observer){ 
    $orderIds = $observer->getData('order_ids'); 
    foreach($orderIds as $_orderId){ 
     $order  = Mage::getModel('sales/order')->load($_orderId); 
     Mage::log($order->debug()); 
     $items = $order->getAllItems(); 
     foreach ($items as $item) { 
      Mage::log($item->debug()); 
     } 
    } 
} 
+0

这工作,谢谢。我将如何去检索这个产品的自定义属性? – Hawiak

+0

那么,Order Item与Product不一样(它并不具备所有的数据),因此您需要使用$ item-> getProduct()获取产品,然后像使用产品一样使用它 - $ item - > getProduct() - > getMyCustomAttribute()或类似的东西。 –

0

有问题与放慢参数取。

为了得到订单ID试试这个

$orderIds = $observer->getEvent()->getOrderIds(); 

你需要改变型号前缀类名:

到:

<class>Feed_Sales_Model</class> 

来源:

<class>Feed_Sales_Model_Order_Observer</class> 

而且

来源:

<class>Feed_Sales_Model_Order_Observer</class> 

<class>feedsales/order_observer</class> 

文件的位置应该是应用程序/代码/ YOurMOduleCodePool /供稿/销售/型号/订购/ Observer.php

相关问题