2015-06-10 95 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

相關問題