2012-09-06 51 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

相关问题