3

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

我有以下代码:

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;

}

它适用于购物车中的所有产品,除了最后一个产品。例如,我正在尝试获取我创建的“可用性”属性的值,该属性只能具有以下值“缺货”、“预购”、“缺货”之一。如果我的购物车中有 3 件商品,我可以获得前 2 件的正确值,但是对于最后一件商品,它只显示“否”。

我已经仔细检查了每个项目,以确保所有属性都设置正确,并且购物车中的任何数量的项目都会发生这种情况。

希望这只是我的一个愚蠢的错误。

任何帮助,将不胜感激。

谢谢。

解决了:

改变:

$_product = Mage::getModel('catalog/product')->load($item->getId());

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

修复问题。

4

1 回答 1

4

问题出在这一行:

$_product = Mage::getModel('catalog/product')->load($item->getId());

$item->getId()您一起获得 IDMage_Sales_Model_Quote_Item而不是 Mage_Catalog_Model_Product. 您必须改为使用$item->getProductId()获取与当前报价项目关联的实际产品的 ID。

于 2012-10-22T21:18:14.870 回答