2011-12-05 44 views
6

Tôi cố gắng lấy các mặt hàng giỏ hàng cho một sản phẩm nhất định;Magento - nhận các mặt hàng giỏ hàng cho một id sản phẩm nhất định

Tôi đã thử mã này:

$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/>"; 
} 

nhưng nó không cung cấp cho bất cứ điều gì.

Làm cách nào để sửa đổi mã của tôi để sử dụng "getItemByProduct" ở dạng đúng?

Cảm ơn bạn đã trợ giúp.

Trả lời

1

Tôi muốn sử dụng

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

Và làm cách nào tôi có thể trực tiếp sử dụng getItemByProduct? – Bizboss

10

getItemByProduct() trả về đầu tiên phù hợp với Mage_Sales_Model_Quote_Item do đó không cần thiết cho một vòng lặp thêm.

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

Tôi gặp lỗi: Lỗi nghiêm trọng: Gọi tới hàm thành viên getId() trên một đối tượng không trong /catalog/product/list.phtml trên dòng 996 – Bizboss

+0

Nếu '$ product' không nằm trong' $ quote' thì ' $ item' sẽ là 'false'. Đó là một điều có thể gây ra lỗi mà bạn nhìn thấy. – clockworkgeek

1

Bạn không thể sử dụng chức năng getItemByProduct() trên mô hình checkout/cart hoặc checkout/quote như phương pháp đó là của mô hình sales/quote.

Bạn có thể tìm thấy phương thức này tại Mage_Sales_Model_Quote class. vì vậy nó được sử dụng withe sales/quote. hy vọng điều này hữu ích.

+0

cảm ơn bạn đã chỉnh sửa chriz –

Các vấn đề liên quan