2011-12-05 12 views
6

Staram się zdobyć przedmioty w koszyku dla danego produktu;Magento - pobierz przedmioty w koszyku dla danego produktu id

Próbowałem ten kod:

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

ale to nic nie daje.

Jak mogę zmodyfikować mój kod, aby użyć "getItemByProduct" we właściwej formie?

Dzięki za pomoc.

Odpowiedz

1

użyję

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

I jak mogę bezpośrednio użyć getItemByProduct? – Bizboss

10

getItemByProduct() zwraca pierwszy pasujący Mage_Sales_Model_Quote_Item więc nie ma potrzeby stosowania dodatkowych pętli.

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

Wystąpił błąd: Błąd krytyczny: wywołanie funkcji składowej getId() na nieobiektach w/catalog/product/list.phtml na linii 996 – Bizboss

+0

Jeśli '$ product' nie znajduje się w' $ quote', to ' $ item' będzie "false". To jest jedna rzecz, która może spowodować błąd, który widzisz. – clockworkgeek

1

Nie można używać getItemByProduct() funkcji modelu checkout/cart lub checkout/quote jako że metoda jest model sales/quote. Ta metoda może być dostępna pod numerem Mage_Sales_Model_Quote class. więc jest używany z sales/quote. mam nadzieję, że to jest przydatne.

+0

dziękuję za edycję chriz –

Powiązane problemy