我有观察者观看事件sales_quote_item_set_product。其中,我正在检查一些条件以确保该项目仍然可用。如果不是,我运行这段代码:仅在第2页刷新后才显示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,但以某种方式导致了递归错误。任何人都可以告诉我何时/在哪里运行这段代码?
另一个疯狂的想法是,因为我使用数据库会话而不是文件系统?
感谢您的帮助Alan,我从您的博客中获得了大量有用的信息,并热爱商业Bug!不幸的是,这个事件并没有在ajax请求中发起。正在生成购物车摘要时发生了这种情况。在消息被渲染后加载的。我的解决方案是重定向用户,以便他们可以修复错误。我对这个解决方案并不满意,但我找不到一个足够早的解雇事件,并且有销售报价数据。 –
@JasonNeumann嗯,是的 - 如果你正在听的动作是在消息块渲染后发生的,那么你可以做的并不多。可能有些事情可能会让一些额外的JS添加到页面中,从而增加额外的错误,但这可能是您寻找的更多工作。此外,Re:发现事件,不要忘记,商业bug二有一个事件和观察员选项卡 - 用于跟踪这些事情http://commercebugdemo.pulsestorm.net/ –