Estou tentando capturar o evento que é acionado quando um item é adicionado ao carrinho. Atualmente, estou assistindo o seguinte evento: checkout_cart_product_add_after
De acordo com a fonte magento, este evento é acionado depois que tudo é feito para a cotação. mas quando eu acesso o ID do carrinho e o ID da cotação, os valores estão vazios:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
O item acima retorna vazio para os dois IDs quando não há itens no carrinho, se o carrinho já tiver um item, o ID do carrinho tem valor, mas o quote_item_id não.
Observe que isso já foi perguntado antes, mas a questão nunca foi resolvida e a discussão acabou se afastando desse problema. Eu preciso do quote_item_id.
magento-1.7
event-observer
quote
Nuno Furtado
fonte
fonte
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
e vejavar/log/system.log
como é o item da cotação. Talvez você tenha uma ideia a partir daí.Respostas:
Não faça isso.
Seu problema é que o carrinho ainda não foi salvo. Dê uma olhada aqui:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
O que você quer é ouvir
checkout_cart_add_product_complete
Se você quiser saber quais itens foram adicionados nesta rodada, basta sinalizá-los
checkout_cart_product_add_after
como$quoteItem->setIsNew()
você pode fazer check-incheckout_cart_add_product_complete
para$quoteItem->getIsNew()
fonte
Você pode usar o
checkout_cart_product_add_after
evento com isso:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Os dados retornados são semelhantes a este:
Isso foi testado no Magento 1.9.1.0, mas pelo que posso dizer, isso deve funcionar no 1.7
fonte
você pode usar o seguinte evento
e obtenha o ID do item no observador como este.
fonte
Resolvi esse problema chamando save on $ cart e on quoteItem. Não selecionar isso como correto, pois não tenho certeza se esse é o melhor método.
A solução Fabian Blechschmidt é muito melhor, use essa.
fonte