Şu anda alışveriş sepetindeki tüm ürünler nasıl alınır?


Yanıtlar:


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

içinde $cartsize sepeti öğesinin tüm koleksiyonu var ve ürün kimliği almak istiyorsanız, size foreach döngüsü kullanarak alabilirsiniz isim


6
çalışır ancak yapılandırılabilir ürünlere ait ürünler de dahil olmak üzere tüm ürünleri görüntüler. Bahsettiğim ürünler dışındaki tüm ürünleri görüntülemek için getAllVisibleItems ()
Attila Naghi

Bu eşyaların miktarını nasıl gösterebilirim?
Marcos Vinicius

GetModel kullanıyor olmalısınız? GetSingleton'ı kullanmamalı mıydın?
Danny Dev Nz

28

Başka bir çözüm buldum. Aşağıdaki kod benim için çalışıyor.

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

Bu eşyaların miktarını nasıl gösterebilirim?
Marcos Vinicius

1
Neden bir döngü içinde ürün yüklemek için 27 yükseltmeler ....?
sv3n

Bu korkunç bir performansa sahip. Her ürünü zaten kullanımda olduğunda bir döngüye yüklüyorsun $item->getProduct()... Magento'da -> load () 'ı kullanmayı her düşündüğünde, kötü performansa güvenebilirsin, bazen başka bir şey olmaz. seçenek gerçekten ama bu burada durum böyle değil ..
OZZIE

1
@ sv3n: Gösterdiğiniz için teşekkürler. Kod değiştirildi
Sukeshini

20

Farklı şekilde çalışan birkaç yöntem vardır:

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

    Geçerli teklifle ilişkili tüm öğelerin bulunduğu bir teklif öğesi koleksiyonunu döndürür .

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

    Bu, yukarıdaki yöntem için bir kısayoldur, ancak alıntı yoksa boş bir dizi döndürür, bu nedenle bir koleksiyon örneği almaya güvenemezsiniz.

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

    Öğe koleksiyonunu yükler, daha sonra silinmiş olarak işaretlenmemiş tüm öğelerin bir dizisini döndürür (yani, geçerli istekde kaldırılmış)

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

    Öğe koleksiyonunu yükler, daha sonra silinmiş olarak işaretlenmemiş VE üst öğeye sahip olmayan tüm öğelerin bir dizisini döndürür (yani, paketlenmiş ve yapılandırılabilir ürünler için öğeleri alırsınız ancak ilişkili alt öğelerini almazsınız). Her dizi öğesi, alışveriş sepeti sayfasında görüntülenen bir satıra karşılık gelir.

İhtiyaçlarınıza en uygun olanı seçin. Çoğu durumda en son ihtiyaç duyduğunuz yöntemdir, ancak ne yazık ki Magento, yalnızca koleksiyon olarak değil dizi olarak sunar.


Not Mage::getSingleton('checkout/cart')->getQuote()ve Mage::getSingleton('checkout/session')->getQuote()değiştirilebilir vardır.


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

Sepetteki tüm ürünleri almanın en iyi yolu


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

Neden? Fark ne?
LM_Fielding

-7

Alışveriş sepetini almak için aşağıdaki kod kullanılmıştır

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

   }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.