получить пользовательские атрибуты из объекта Mage_Sales_Model_Order_Item - PullRequest
5 голосов
/ 07 июня 2011

Я пишу Обозреватель для управления элементами заказа, мне нужно отправить электронное письмо для каждого заказа на основе некоторых пользовательских атрибутов.

Объектом объекта является 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 ]

6 голосов
/ 07 июня 2011

Возможно, вы захотите загрузить объект продукта, а затем получить данные от этого объекта. Это позволит вам использовать все методы, которые вы ищете:

$product = Mage::getModel('catalog/product')->load($item->getProductId());
$size = $product->getAttributeText('size');
4 голосов
/ 06 сентября 2012

Если $ item является экземпляром Mage_Sales_Model_Order_Item, вы можете просто использовать:

$product = $item->getProduct();
3 голосов
/ 07 июля 2011

решение для отображения пользовательских атрибутов

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 голосов
/ 20 января 2012

Когда я попробовал описанные выше методы, это не сработало как-то в моем классе наблюдателя.На самом деле модель продукта не может быть загружена с вышеуказанным блоком кода.Я нашел этот код, и он работал.Загружает модель продукта в обозревателе.

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

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

$product->load($productId);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...