从 Mage_Sales_Model_Order_Item 对象获取自定义属性

问题描述 投票:0回答:4

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

项目对象是 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();
  }
}

有什么想法吗?

非常感谢

magento
4个回答
6
投票

您可能想要加载产品对象,然后从该对象中获取数据。这将使您能够利用您正在寻找的所有方法:

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

4
投票

如果 $item 是 Mage_Sales_Model_Order_Item 的实例,您可以简单地使用:

$product = $item->getProduct();

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;
}

2
投票

当我尝试上述方法时,它在我的观察者类中不起作用。实际上,上述代码块无法加载产品模型。我找到了这段代码并且它有效。它在观察者中加载产品模型。

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

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

$product->load($productId);

© www.soinside.com 2019 - 2024. All rights reserved.