Saya mencoba menangkap peristiwa yang memanas setelah item ditambahkan ke troli. Saya sedang menonton acara berikut: checkout_cart_product_add_after
Menurut sumber magento, acara ini dipecat setelah semuanya dilakukan pada Penawaran. tetapi ketika saya mengakses id keranjang dan id kutipan nilainya kosong:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
Di atas mengembalikan kosong untuk kedua id ketika tidak ada item di troli, jika troli sudah memiliki item id keranjang memiliki nilai tetapi quote_item_id tidak.
Perhatikan ini telah ditanyakan sebelumnya, tetapi pertanyaannya tidak pernah diselesaikan, dan akhirnya diskusi menyimpang dari masalah ini. Saya membutuhkan quote_item_id.
magento-1.7
event-observer
quote
Nuno Furtado
sumber
sumber
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
dan lihatvar/log/system.log
bagaimana item kutipan itu terlihat. Mungkin Anda mendapat ide dari sana.Jawaban:
Jangan lakukan ini.
Masalah Anda adalah, bahwa kereta belum disimpan, lihat di sini:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
Yang Anda inginkan adalah mendengarkan
checkout_cart_add_product_complete
Jika Anda ingin tahu mana item mana ditambahkan babak ini, hanya bendera mereka dalam
checkout_cart_product_add_after
seperti$quoteItem->setIsNew()
maka Anda dapat memeriksa dicheckout_cart_add_product_complete
untuk$quoteItem->getIsNew()
sumber
Anda dapat menggunakan
checkout_cart_product_add_after
acara ini dengan ini:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Data yang dikembalikan terlihat mirip dengan ini:
Ini diuji di Magento 1.9.1.0, tetapi dari apa yang saya tahu, ini harus bekerja pada 1,7
sumber
Anda dapat menggunakan acara berikut
dan dapatkan item id di observer seperti ini.
sumber
Saya memecahkan masalah ini dengan menelepon save on $ cart dan pada quoteItem. Tidak memilih ini sebagai benar karena saya tidak yakin ini adalah metode terbaik.
Solusi Fabian Blechschmidt jauh lebih baik, gunakan yang itu.
sumber