Bagaimana cara mendapatkan semua item dalam keranjang saat ini?


Jawaban:


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

di $cartAnda mendapat semua koleksi item keranjang dan jika Anda ingin mendapatkan id produk, nama Anda bisa dapatkan dari menggunakan foreach loop


6
berfungsi tetapi menampilkan semua produk termasuk produk yang termasuk dalam produk yang dapat dikonfigurasi. Untuk menampilkan semua produk kecuali yang saya sebutkan, Anda harus menggunakan getAllVisibleItems ()
Attila Naghi

Bagaimana cara menunjukkan jumlah barang ini?
Marcos Vinicius

Haruskah Anda menggunakan getModel? Bukankah Anda seharusnya menggunakan getSingleton?
Danny Dev Nz

28

Saya menemukan solusi lain. Kode berikut ini berfungsi untuk saya.

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

Bagaimana cara menunjukkan jumlah barang ini?
Marcos Vinicius

1
Mengapa 27 upvotes untuk memuat produk dalam satu lingkaran ....?
sv3n

Ini memiliki kinerja yang buruk .. Anda memuat setiap produk dalam satu lingkaran ketika mereka sudah tersedia melalui $item->getProduct()... Setiap kali Anda berpikir tentang menggunakan -> memuat () di magento Anda dapat mengandalkan kinerja yang buruk, kadang-kadang tidak ada yang lain pilihan benar-benar tetapi ini tidak terjadi di sini ..
OZZIE

1
@ sv3n: Terima kasih telah menunjukkannya.
Memodifikasi

20

Ada beberapa metode yang bekerja dengan cara yang berbeda:

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

    Mengembalikan koleksi item penawaran dengan semua item yang terkait dengan penawaran saat ini.

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

    Ini adalah jalan pintas untuk metode di atas, tetapi jika tidak ada penawaran, ia mengembalikan array kosong, jadi Anda tidak bisa mengandalkan mendapatkan contoh koleksi.

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

    Memuat koleksi item, lalu mengembalikan array semua item yang tidak ditandai sebagai dihapus (mis. Telah dihapus dalam permintaan saat ini)

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

    Memuat koleksi item, lalu mengembalikan array semua item yang tidak ditandai sebagai dihapus DAN tidak memiliki orang tua (yaitu Anda mendapatkan item untuk produk yang dibundel dan dapat dikonfigurasi tetapi bukan anak-anak yang terkait). Setiap item array sesuai dengan baris yang ditampilkan di halaman keranjang.

Pilih yang paling sesuai dengan kebutuhan Anda. Dalam kebanyakan kasus, metode terakhir adalah yang Anda butuhkan, tetapi sayangnya Magento hanya menyediakannya sebagai array dan bukan sebagai koleksi.


Perhatikan itu Mage::getSingleton('checkout/cart')->getQuote()dan Mage::getSingleton('checkout/session')->getQuote()dapat dipertukarkan.


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

Cara terbaik untuk mendapatkan semua item dalam keranjang


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

Mengapa? Apa bedanya?
LM_Fielding

-7

Kode di bawah ini digunakan untuk mendapatkan item keranjang

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

   }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.