Wie bekomme ich aktuell alle Artikel im Warenkorb?


Antworten:


61
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
    $productName = $item->getProduct()->getName();
    $productPrice = $item->getProduct()->getPrice();
}

in $cartSie bekam die ganze Sammlung von Wagenposition und wenn Sie Produkt - ID erhalten möchten, nennen Sie verwenden foreach - Schleife bekommen


6
Es funktioniert, zeigt jedoch alle Produkte an, einschließlich der Produkte, die zu konfigurierbaren Produkten gehören. Um alle Produkte außer den genannten anzuzeigen, müssen Sie getAllVisibleItems ()
Attila Naghi

Wie wird die Menge dieses Artikels angezeigt?
Marcos Vinicius

Sollten Sie getModel verwenden? Sollten Sie nicht getSingleton verwenden?
Danny Dev Nz

28

Ich habe eine andere Lösung gefunden. Der folgende Code funktioniert für mich.

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
    $productId = $item->getProductId();     
    // Do something more
}

Wie wird die Menge dieses Artikels angezeigt?
Marcos Vinicius

1
Warum 27 Upvotes für das Laden von Produkten in einer Schleife?
Sv3n

Dies hat eine schreckliche Leistung. Sie laden jedes Produkt in eine Schleife, wenn es bereits über $item->getProduct()... verfügbar ist. Jedes Mal, wenn Sie über die Verwendung von -> load () in Magento nachdenken, können Sie mit einer schlechten Leistung rechnen, manchmal gibt es keine andere Option wirklich, aber das ist hier nicht der Fall ..
Ozzie

1
@ sv3n: Danke für den Hinweis. Der Code wurde
geändert

20

Es gibt verschiedene Methoden, die auf unterschiedliche Weise funktionieren:

  1. $items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();

    Gibt eine Angebotseintragssammlung mit allen Einträgen zurück, die dem aktuellen Angebot zugeordnet sind.

  2. $items = Mage::getSingleton('checkout/cart')->getItems();

    Dies ist eine Abkürzung für die obige Methode. Wenn jedoch kein Anführungszeichen vorhanden ist, wird ein leeres Array zurückgegeben, sodass Sie sich nicht darauf verlassen können, eine Auflistungsinstanz abzurufen.

  3. $items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();

    Lädt die Elementauflistung und gibt dann ein Array aller Elemente zurück, die nicht als gelöscht markiert sind (dh in der aktuellen Anforderung entfernt wurden).

  4. $items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();

    Lädt die Artikelsammlung und gibt dann ein Array aller Artikel zurück, die nicht als gelöscht markiert sind UND keine übergeordneten Artikel haben (dh Sie erhalten Artikel für gebündelte und konfigurierbare Produkte, aber nicht die zugehörigen untergeordneten Artikel). Jedes Array-Element entspricht einer angezeigten Zeile auf der Warenkorbseite.

Wählen Sie, was Ihren Bedürfnissen am besten entspricht. In den meisten Fällen ist die letzte Methode die, die Sie benötigen, aber leider bietet Magento sie nur als Array und nicht als Sammlung an.


Beachten Sie, dass Mage::getSingleton('checkout/cart')->getQuote()und Mage::getSingleton('checkout/session')->getQuote()austauschbar sind.


1
$items =Mage::getSingleton('checkout/session')->getQuote()->getAllItems();

foreach($items as $item) {
    echo 'ID: '.$item->getProductId().'<br />';
    echo 'Name: '.$item->getName().'<br />';
    echo 'Sku: '.$item->getSku().'<br />';
    echo 'Quantity: '.$item->getQty().'<br />';
    echo 'Price: '.$item->getPrice().'<br />';
    echo "<br />";
}

beste Weg, um alle Artikel in den Warenkorb zu bekommen


Verwende Mage :: getSingleton ('checkout / cart') -> getQuote () -> getAllItems ();
Aman Srivastava

Warum? Was ist der Unterschied?
LM_Fielding

-7

Der folgende Code wird zum Abrufen von Warenkorbartikeln verwendet

$cart = new Mage_Checkout_Model_Cart();

$cart->init();

foreach ($cart->getItems() as $item) {

   // we can wrap our request in this IF statement

   if (!$item->getParentItemId()) {

   }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.