Ich versuche, das Ereignis zu erfassen, das ausgelöst wird, sobald ein Artikel in den Warenkorb gelegt wird. Ich beobachte derzeit das folgende Ereignis: checkout_cart_product_add_after
Laut Magento-Quelle wird dieses Ereignis ausgelöst, nachdem alles mit dem Zitat getan wurde. aber wenn ich auf die Warenkorb-ID und die Angebots-ID zugreife, sind die Werte leer:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
Die obigen Angaben sind für beide IDs leer, wenn sich keine Artikel im Warenkorb befinden. Wenn der Warenkorb bereits einen Artikel enthält, hat die Warenkorb-ID einen Wert, die quote_item_id jedoch nicht.
Beachten Sie, dass dies bereits gestellt wurde, die Frage jedoch nie gelöst wurde und die Diskussion von diesem Problem abwich. Ich brauche die quote_item_id.
magento-1.7
event-observer
quote
Nuno Furtado
quelle
quelle
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
und sehen Sie,var/log/system.log
wie das Angebot aussieht. Vielleicht bekommen Sie von dort eine Idee.Antworten:
Tu das nicht.
Ihr Problem ist, dass der Warenkorb noch nicht gespeichert ist. Schauen Sie hier:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
Was Sie wollen, ist zuzuhören
checkout_cart_add_product_complete
Wenn Sie wissen möchten , welche Elemente in dem diese Runde hinzugefügt, gerade Flagge sie in
checkout_cart_product_add_after
wie$quoteItem->setIsNew()
dann können Sie überprüfen , incheckout_cart_add_product_complete
für$quoteItem->getIsNew()
quelle
Sie können das
checkout_cart_product_add_after
Ereignis folgendermaßen verwenden:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Die zurückgegebenen Daten sehen folgendermaßen aus:
Dies wurde auf Magento 1.9.1.0 getestet, aber soweit ich das beurteilen kann, sollte dies auf 1.7 funktionieren
quelle
Sie können folgendes Ereignis verwenden
und erhalten Sie die Artikel-ID im Beobachter wie folgt.
quelle
Ich habe dieses Problem gelöst, indem ich save on $ cart und quoteItem aufgerufen habe. Ich wähle dies nicht als richtig aus, da ich nicht sicher bin, ob dies die beste Methode ist.
Fabian Blechschmidt Lösung ist viel besser, verwenden Sie diese.
quelle