Magento:无法获取购物车中最后一项的属性值

时间:2012-10-22 20:30:24

标签: php magento shopping-cart

我遇到了一个问题,即获取放置在用户购物车中的产品的属性值。

我有以下代码:

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());

解决了这个问题。

1 个答案:

答案 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。