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

Keyur Shah
sumber
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
}
Sukeshini
sumber
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.

Fabian Schmengler
sumber
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

Rahul Singh
sumber
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()) {

   }
}
Abhishek Gupta
sumber