2012-09-06 17 views
2

我嘗試獲取已購買的產品。 這是我的代碼:使用事件sales_order_place_after不會返回magento中的自定義產品屬性

/** @var $order Mage_Sales_Model_Order */ 
    $order = $eventObserver->getOrder(); 

    /** @var $items Mage_Sales_Model_Resource_Order_Collection */ 
    $items = $order->getItemsCollection(array(), TRUE); 

    /** @var $item Mage_Sales_Model_Order_Item */ 
    foreach($items as $item) { 
     $product = $item->getProduct(); 
     var_dump($product->getData('language')); 
    } 

語言是一個自定義屬性。在這種情況下,它是空的,我不知道爲什麼。所有的默認屬性,如名稱,ID或SKU正在工作。

該語言用作可配置屬性。

我該怎麼做才能獲得價值?

+1

該屬性的輸入類型是什麼?它是文本字段,文本區域,日期,是/否,多選或下拉? – ceckoslab

+0

這是一個多重選擇。 – Armin

+1

如果您使用:$ product-> getAttributeText('language'),您會獲得一些數據嗎? – ceckoslab

回答

0

明白了! 當我走產品ID,然後重新裝入產品:

$product = $item->getProduct(); 
$product = Mage::getModel('catalog/product')->load($product->getId()); 

我得到的語言數量。

+1

更正和更好的性能檢查這個問題:「如果我知道產品ID而無需加載整個產品,如何獲得特定的產品屬性值?」 - http://stackoverflow.com/questions/6924226/magento-product-attribute-get-value – ceckoslab

0

試試這個:

$items = $order->getAllVisibleItems() 
+0

當我使用這個,我只得到可配置的產品(好吧,這是有道理的,他們是可見的)。但可配置產品不包含該語言。所以我需要獲得已訂購的簡單產品。 – Armin

相關問題