Estoy tratando de detectar el evento que se dispara una vez que se agrega un artículo al carrito. Actualmente estoy viendo el siguiente evento: checkout_cart_product_add_after
Según la fuente de magento, este evento se dispara después de que todo se hace para la Cotización. pero cuando accedo al identificador del carrito y al identificador de cotización, los valores están vacíos:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
Lo anterior vuelve vacío para ambos identificadores cuando no hay artículos en el carrito, si el carrito ya tiene un artículo, la identificación del carrito tiene valor pero el quote_item_id no.
Tenga en cuenta que esto se ha preguntado antes, pero la pregunta nunca se resolvió, y la discusión terminó desviándose de este problema. Necesito el quote_item_id.
magento-1.7
event-observer
quote
Nuno Furtado
fuente
fuente
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
y veavar/log/system.log
cómo se ve el artículo de la cita. Quizás tengas una idea a partir de ahí.Respuestas:
No hagas esto.
Su problema es que el carrito aún no está guardado, eche un vistazo aquí:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
Lo que quieres es escuchar
checkout_cart_add_product_complete
Si desea saber qué elementos se agregaron esta ronda, simplemente márquelos
checkout_cart_product_add_after
como,$quoteItem->setIsNew()
entonces puede registrarsecheckout_cart_add_product_complete
para$quoteItem->getIsNew()
fuente
Puedes usar el
checkout_cart_product_add_after
evento con esto:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Los datos devueltos se parecen a esto:
Esto fue probado en Magento 1.9.1.0, pero por lo que puedo decir, esto debería funcionar en 1.7
fuente
puedes usar el siguiente evento
y obtener la identificación del elemento en un observador como este.
fuente
Resolví este problema llamando a save en $ cart y en quoteItem. No seleccioné esto como correcto ya que no estoy seguro de que este sea el mejor método.
La solución de Fabian Blechschmidt es mucho mejor, usa esa.
fuente