Как получить все товары в корзине в настоящее время?


Я хочу получить коллекцию всех товаров в корзине в настоящее время.

Как я могу это сделать? Любые предложения будут оценены по достоинству.

Author: Amit Bera, 2013-10-02

5 answers

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

В $cart у вас есть вся коллекция товаров в корзине, и если вы хотите получить идентификатор продукта, имя, которое вы можете получить, используя цикл foreach

 65
Author: Keyur Shah, 2015-08-31 12:14:29

Я нашел другое решение. Следующий код работает для меня.

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
    $productId = $item->getProductId();     
    // Do something more
}
 29
Author: Sukeshini, 2018-02-13 05:17:15

Существует несколько методов, которые работают по-другому:

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

    Возвращает коллекцию элементов предложения с всеми элементами , связанными с текущим предложением.

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

    Это ярлык для описанного выше метода, но если кавычки нет, он возвращает пустой массив, поэтому вы не можете полагаться на получение экземпляра коллекции.

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

    Загружает коллекцию элементов, затем возвращает массив всех элементов , которые не являются помечены как удаленные (т.е. были удалены в текущем запросе)

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

    Загружает коллекцию элементов, затем возвращает массив всех элементов , которые не помечены как удаленные И у нет родительского элемента (т.Е. вы получаете элементы для комплектных и настраиваемых продуктов, но не связанных с ними дочерних элементов). Каждый элемент массива соответствует отображаемой строке на странице корзины.

Выберите то, что лучше всего соответствует вашим потребностям. В большинстве случаев последнее метод - это то, что вам нужно, но, к сожалению, Magento предоставляет его только как массив, а не как коллекцию.


Обратите внимание, что Mage::getSingleton('checkout/cart')->getQuote() и Mage::getSingleton('checkout/session')->getQuote() взаимозаменяемы.

 22
Author: Fabian Schmengler, 2015-08-11 09:38:06
$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 />";
}

Лучший способ получить весь товар в корзине

 1
Author: Rahul Singh, 2016-03-15 05:24:08

Приведенный ниже код используется для получения товаров в корзине

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

   }
}
 -7
Author: Abhishek Gupta, 2014-12-11 11:06:54