Comment obtenir tous les articles dans le panier actuellement?


Réponses:


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

en $cartvous avez toute la collection de l'article de panier et si vous voulez obtenir l'ID du produit, nom que vous pouvez obtenir en utilisant foreach loop


6
cela fonctionne mais il affiche tous les produits, y compris ceux qui appartiennent à des produits configurables. Pour afficher tous les produits, à l'exception de ceux que j'ai mentionnés, vous devez utiliser getAllVisibleItems ()
Attila Naghi

Comment afficher la quantité de ces articles?
Marcos Vinicius

Devez-vous utiliser getModel? Ne devriez-vous pas utiliser getSingleton?
Danny Dev Nz

28

J'ai trouvé une autre solution. Le code suivant fonctionne pour moi.

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

Comment afficher la quantité de ces articles?
Marcos Vinicius

1
Pourquoi 27 votes positifs pour le chargement de produits en boucle?
sv3n

Cela a de très mauvaises performances .. vous chargez chaque produit dans une boucle alors qu’ils sont déjà disponibles via $item->getProduct()... Chaque fois que vous pensez utiliser -> load () dans magento, vous pouvez compter sur les mauvaises performances. Parfois, il n’y en a pas d’autre. option vraiment mais ce n'est pas le cas ici ..
OZZIE

1
@ sv3n: Merci de l'avoir signalé. Modification du code
Sukeshini le

21

Il existe plusieurs méthodes qui fonctionnent de manière différente:

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

    Renvoie une collection d' éléments de devis avec tous les éléments associés au devis en cours.

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

    Ceci est un raccourci pour la méthode ci-dessus, mais s'il n'y a pas de citation, il retourne un tableau vide. Vous ne pouvez donc pas vous fier à l'obtention d'une instance de collection.

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

    Charge la collection d'éléments, puis renvoie un tableau de tous les éléments qui ne sont pas marqués comme supprimés (c'est-à-dire qui ont été supprimés dans la demande en cours).

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

    Charge la collection d'éléments, puis renvoie un tableau de tous les éléments qui ne sont pas marqués comme supprimés ET qui n'ont pas de parent (c'est-à-dire que vous obtenez des éléments pour les produits regroupés et configurables, mais pas leurs enfants associés). Chaque élément du tableau correspond à une ligne affichée dans la page du panier.

Choisissez ce qui correspond le mieux à vos besoins. Dans la plupart des cas, la dernière méthode correspond à vos besoins, mais malheureusement, Magento ne la fournit que sous forme de tableau et non de collection.


Notez que Mage::getSingleton('checkout/cart')->getQuote()et Mage::getSingleton('checkout/session')->getQuote()sont interchangeables.


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

meilleur moyen d'obtenir le tout dans le panier


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

Pourquoi? Quelle est la différence?
LM_Fielding

-7

Le code ci-dessous est utilisé pour obtenir des articles de panier

$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()) {

   }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.