J'essaie d'attraper l'événement qui se déclenche une fois qu'un article est ajouté au panier. Je regarde actuellement l'événement suivant: checkout_cart_product_add_after
Selon la source magento, cet événement est déclenché après que tout soit fait pour le devis. mais lorsque j'accède à l'identifiant du panier et à l'identifiant du devis, les valeurs sont vides:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
Ce qui précède renvoie vide pour les deux identifiants lorsqu'il n'y a pas d'articles dans le panier, si le panier a déjà un article, l'identifiant du panier a de la valeur mais pas le quote_item_id.
Notez que cela a déjà été demandé, mais la question n'a jamais été résolue et la discussion a fini par s'écarter de ce problème. J'ai besoin du quote_item_id.
magento-1.7
event-observer
quote
Nuno Furtado
la source
la source
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
et voyez àvar/log/system.log
quoi ressemble l'élément de devis. Vous avez peut-être une idée à partir de là.Réponses:
Ne fais pas ça.
Votre problème est que le panier n'est pas encore enregistré, jetez un œil ici:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
Ce que tu veux c'est écouter
checkout_cart_add_product_complete
Si vous voulez savoir quels articles où a ajouté ce tour, juste les signaler dans
checkout_cart_product_add_after
comme$quoteItem->setIsNew()
vous pouvez vérifier danscheckout_cart_add_product_complete
pour$quoteItem->getIsNew()
la source
Vous pouvez utiliser l'
checkout_cart_product_add_after
événement avec ceci:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Les données renvoyées ressemblent à ceci:
Cela a été testé sur Magento 1.9.1.0, mais d'après ce que je peux dire, cela devrait fonctionner sur 1.7
la source
vous pouvez utiliser l'événement suivant
et obtenir l'identifiant de l'élément dans l'observateur comme celui-ci.
la source
J'ai résolu ce problème en appelant save on $ cart et sur quoteItem. Ne pas sélectionner cela comme correct car je ne suis pas sûr que ce soit la meilleure méthode.
La solution Fabian Blechschmidt est bien meilleure, utilisez celle-ci.
la source