我正在编写一个观察者来管理订单的项目,我需要根据一些自定义属性为每个订单发送一封电子邮件。
项目对象是 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();
}
}
有什么想法吗?
非常感谢
您可能想要加载产品对象,然后从该对象中获取数据。这将使您能够利用您正在寻找的所有方法:
$product = Mage::getModel('catalog/product')->load($item->getProductId());
$size = $product->getAttributeText('size');
如果 $item 是 Mage_Sales_Model_Order_Item 的实例,您可以简单地使用:
$product = $item->getProduct();
显示自定义属性的解决方案
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;
}
当我尝试上述方法时,它在我的观察者类中不起作用。实际上,上述代码块无法加载产品模型。我找到了这段代码并且它有效。它在观察者中加载产品模型。
$product = Mage::getModel('catalog/product');
$productId = $product->getIdBySku($item->getSku());
$product->load($productId);