Я пытаюсь поймать событие, которое происходит, когда товар добавлен в корзину. В настоящее время я смотрю следующее событие: checkout_cart_product_add_after
Согласно источнику magento, это событие происходит после того, как все сделано в Цитате. но когда я получаю доступ к идентификатору корзины и идентификатору котировки, значения становятся пустыми:
$quoteItem = $observer->getQuoteItem();
$quote_item_id = $quoteItem->getItemId();
$cart = Mage::getSingleton('checkout/session');
$quote_id= $cart->getQuoteId();
Вышеуказанное возвращает пустое значение для обоих идентификаторов, если в корзине нет товаров, если в корзине уже есть товар, идентификатор корзины имеет значение, а quote_item_id - нет.
Заметьте, что это было задано ранее, но вопрос так и не был решен, и обсуждение закончилось отклонением от этого вопроса. Мне нужен quote_item_id.
magento-1.7
event-observer
quote
Нуно Фуртадо
источник
источник
$quoteItem = $observer->getEvent()->getQuoteItem();
Mage::log($quoteItem)
и посмотрите,var/log/system.log
как выглядит элемент цитаты. Может быть, у вас есть идея оттуда.Ответы:
Не делай этого.
Ваша проблема в том, что корзина еще не сохранена, посмотрите здесь:
https://github.com/LokeyCoding/magento-mirror/blob/magento-1.7/app/code/core/Mage/Checkout/controllers/CartController.php#L201-L206
То, что вы хотите, это слушать
checkout_cart_add_product_complete
Если вы хотите узнать, какие предметы были добавлены в этом раунде, просто отметьте их
checkout_cart_product_add_after
как,$quoteItem->setIsNew()
тогда вы можете зарегистрироватьсяcheckout_cart_add_product_complete
на$quoteItem->getIsNew()
источник
Вы можете использовать
checkout_cart_product_add_after
событие с этим:$observer->getEvent()->getQuoteItem()->getProduct()->getData()
Возвращенные данные выглядят примерно так:
Это было проверено на Magento 1.9.1.0, но, насколько я могу судить, это должно работать на 1.7
источник
Вы можете использовать следующее событие
и получить идентификатор элемента в обозревателе, как это.
источник
Я решил эту проблему, вызвав save на $ cart и quoteItem. Не выбрав это как правильный, так как я не уверен, что это лучший метод.
Решение Фабиана Блехшмидта намного лучше, используйте его.
источник