2011-12-05 94 views
6

我尝试获取给定产品的购物车商品;Magento - 获取给定产品ID的购物车商品

我曾尝试这样的代码:

$product = Mage::getModel('catalog/product') 
    ->setStoreId(Mage::app()->getStore()->getId()) 
    ->load('2784'); 

$quote = Mage::getSingleton('checkout/cart')->getQuote(); 
$cartItems = $quote->getItemByProduct($product); 
foreach ($cartItems as $item) { 
    echo $item->getId()."<br/>"; 
} 

,但它没有给出任何事情。

如何修改我的代码以正确的形式使用“getItemByProduct”?

感谢您的帮助。

回答

1

我会使用

foreach ($quote->getItems() as $item) { 
    if ($item->getProductId() == $product->getId()) { 
     print_r($item->getData()); 
    } 
} 
+0

我该如何直接使用getItemByProduct? – Bizboss

10

getItemByProduct()返回第一个匹配Mage_Sales_Model_Quote_Item所以没有需要额外的循环。

$item = $quote->getItemByProduct($product); 
if ($item !== false) echo $item->getId(); 
+0

我收到一个错误: 致命错误:致电996行/catalog/product/list.phtml中非对象的成员函数getId()996 – Bizboss

+0

如果'$ product'不在'$ quote'中,那么' $ item'将会是'false'。这是可能导致你看到的错误的一件事。 – clockworkgeek

1

不能使用在checkout/cartcheckout/quote模型getItemByProduct()函数作为方法是sales/quote模式。

您可以在Mage_Sales_Model_Quote class找到该方法。所以它与sales/quote一起使用。希望这是有用的。

+0

谢谢你编辑chriz –

相关问题