从Mage_Sales_Model_Order_Item对象获取自定义属性

时间:2011-06-07 10:32:34

标签: magento

我正在编写一个Observer来管理订单的商品,我需要根据一些自定义属性为每个订单发送一封电子邮件。

item对象是Mage_Sales_Model_Order_Item并且我一直在搜索getData('my_code'),getCustomAttribute,getAttributeText等方法但没有成功。

我需要获取类别,大小,颜色和一些自定义属性...... 这是我的小代码

class Example_OrderMod_Model_Observer{

  public function doSomething($observer){
    $order = $observer->getEvent()->getOrder();

    $id_ordine = $order->getRealOrderId();
    $cliente = $observer->getEvent()->getOrder()->getCustomerName();

    foreach ($order->getAllItems() as $item) {
    //$item is an instance of Mage_Sales_Model_Order_Item

      $quantita =  $item->getQtyOrdered();
      $codice_giglio =  $item->getSku();

      //echo $item->getData('size');
      var_dump($item->getAttributeText('size'));
      var_dump($item->getProductOptionByCode('size'));
      var_dump($item->getProductOptionByCode('famiglia'));

    }
//    die();
  }
}

任何想法?

非常感谢

4 个答案:

答案 0 :(得分:6)

您可能希望加载产品对象,然后从该对象获取数据。这将允许您使用您正在寻找的所有方法:

$product = Mage::getModel('catalog/product')->load($item->getProductId());
$size = $product->getAttributeText('size');

答案 1 :(得分:4)

如果$ item是Mage_Sales_Model_Order_Item的实例,您只需使用:

$product = $item->getProduct();

答案 2 :(得分:3)

显示自定义属性的解决方案

function getAttr($product_id, $attributeName) {
    $product = Mage::getModel('catalog/product')->load($product_id);
    $attributes = $product->getAttributes();
    $attributeValue = null;
    if(array_key_exists($attributeName , $attributes)) {
        $attributesobj = $attributes["{$attributeName}"];
        $attributeValue = $attributesobj->getFrontend()->getValue($product);
    }
    return $attributeValue;
}

答案 3 :(得分:2)

当我尝试上述方法时,它在我的观察者类中没有以某种方式工作。实际上产品型号无法加载上述代码块。我发现这个代码并且它有效。它在观察者中加载产品模型。

$product = Mage::getModel('catalog/product');

$productId = $product->getIdBySku($item->getSku());

$product->load($productId);