我遇到了一个问题,即获取放置在用户购物车中的产品的属性值。
我有以下代码:
umask(0);
Mage::app();
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('checkout/session');
$cart = Mage::helper('checkout/cart')->getCart()->getItemsCount();
foreach ($session->getQuote()->getAllItems() as $item) {
$_product = Mage::getModel('catalog/product')->load($item->getId());
$attributeValue = $_product->getAttributeText('availability');
echo $attributeValue;
}
除了最后一个产品外,它适用于购物车中的所有产品。例如,我正在尝试获取我创建的“可用性”属性的值,该属性只能包含以下值中的一个“Backorder”,“Preorder”,“Out of Stock”。如果我的购物车中有3件商品,我可以获得前2件的正确值,但是对于最后一件商品,它只显示“否”。
我仔细检查了每件商品,以确保所有属性设置正确,并且购物车中的任意数量的商品都会出现这种情况。
希望这对我来说只是一个愚蠢的错误。
任何帮助都将不胜感激。
感谢。
解决:
更改:
$_product = Mage::getModel('catalog/product')->load($item->getId());
到
$_product = Mage::getModel('catalog/product')->load($item->getProductId());
解决了这个问题。
答案 0 :(得分:4)
问题出在那一行:
$_product = Mage::getModel('catalog/product')->load($item->getId());
使用$item->getId()
,您的ID为Mage_Sales_Model_Quote_Item
,而不是Mage_Catalog_Model_Product
。您必须使用$item->getProductId()
来获取与当前报价项目相关联的实际产品的ID。