У меня есть наблюдатель, наблюдающий за событием sales_quote_item_set_product. В нем я проверяю некоторые условия, чтобы убедиться, что элемент все еще доступен. Если это не так, я запускаю этот код:Сообщение об ошибке magento отображается только после обновления второй страницы
Mage::helper('checkout/cart')->getCart()->removeItem($item->getId())->save();
Mage::getSingleton('message/session')->addError($item->getName() . ' is no longer available.');
Проблема у меня есть, если элемент становится недоступным и для гостей на странице просмотра продуктов, тележка говорит деталь в корзину, но общая сумма для корзины обновляется, чтобы отразить удаляемый продукт. Также сообщение об ошибке не отображается. Если вы перейдете на другую страницу или обновите страницу просмотра продукта, появится сообщение об ошибке, и количество элементов в корзине будет правильным.
Так что я думал, что мне нужно запустить этот код раньше в цикле выполнения, но я не знаю, какое событие я должен наблюдать, или если я вообще не должен использовать наблюдателя. Я попытался использовать sales_quote_load_after, но это вызвало ошибку рекурсии. Может ли кто-нибудь сказать мне, когда/где я должен запускать этот код?
Другая дикая мысль может быть, потому что я использую сеансы базы данных вместо файловой системы?
Спасибо за помощь. Алан, у меня есть много полезной информации из вашего блога и любовь к коммерции! К сожалению, событие не срабатывало в запросе ajax. Это происходило, когда генерировалось резюме корзины. Которая загрузилась после отображения сообщений. Моим решением было перенаправить пользователя, чтобы они могли исправить ошибку. Я не на 100% доволен исправлением, но я не мог найти событие, которое срабатывало достаточно рано, и в нем были данные о продажах. –
@JasonNeumann Ах, да, если действие, которое вы слушаете, происходит после отображения блока сообщений, вы не можете многое сделать. Возможно, вам удастся добавить что-то, что добавит некоторую дополнительную JS для добавления на страницу дополнительных ошибок, но это, вероятно, больше работы, которую вы ищете. Кроме того, Re: поиск событий, не забывайте, что в двоичной ошибке в торговле есть вкладка событий и наблюдателей - полезно для отслеживания этих вещей на http://commercebugdemo.pulsestorm.net/ –