Próbuję uchwycić zdarzenie, które jest uruchamiane po dodaniu przedmiotu do koszyka. Obecnie oglądam następujące wydarzenie: checkout_cart_product_add_after
Według źródła magento to wydarzenie jest uruchamiane po tym, jak wszystko zostanie zrobione do wyceny. ale kiedy uzyskuję dostęp do identyfikatora koszyka i identyfikatora oferty, wartości są puste:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
Powyższe zwraca puste dla obu identyfikatorów, gdy w koszyku nie ma żadnych przedmiotów, jeśli koszyk ma już przedmiot, identyfikator koszyka ma wartość, ale identyfikator_doceny nie.
Zauważ, że zostało to zadane wcześniej, ale pytanie nigdy nie zostało rozwiązane, a dyskusja ostatecznie zbłądziła z tego problemu. Potrzebuję quote_item_id.
magento-1.7
event-observer
quote
Nuno Furtado
źródło
źródło
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
i zobacz,var/log/system.log
jak wygląda cytat. Może masz pomysł stamtąd.Odpowiedzi:
Nie rób tego
Twój problem polega na tym, że koszyk nie został jeszcze zapisany, spójrz tutaj:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
To czego chcesz to słuchać
checkout_cart_add_product_complete
Jeśli chcesz wiedzieć, które elementy gdzie dodawane tej rundzie tylko flaga je w
checkout_cart_product_add_after
jak$quoteItem->setIsNew()
to można sprawdzić wcheckout_cart_add_product_complete
za$quoteItem->getIsNew()
źródło
Możesz użyć
checkout_cart_product_add_after
wydarzenia z tym:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Zwrócone dane wyglądają podobnie do tego:
Zostało to przetestowane na Magento 1.9.1.0, ale z tego co mogę powiedzieć, powinno to działać na 1.7
źródło
możesz użyć następującego wydarzenia
i uzyskaj identyfikator przedmiotu w takim obserwatorze.
źródło
Rozwiązałem ten problem, dzwoniąc do save on $ cart i quoteItem. Nie wybranie tego jako poprawnego, ponieważ nie jestem pewien, czy jest to najlepsza metoda.
Rozwiązanie Fabiana Blechschmidta jest znacznie lepsze, użyj tego.
źródło