我有一个观察员正在观看活动 sales_quote_item_set_product。在其中,我正在检查一些条件以确保该项目仍然可用。如果不是,我运行以下代码:
Mage::helper('checkout/cart')->getCart()->removeItem($item->getId())->save();
Mage::getSingleton('message/session')->addError($item->getName() . ' is no longer available.');
我遇到的问题是,如果某个商品不可用并且客人在产品查看页面上,购物车说该商品在购物车中,但购物车的总数会更新以反映被删除的产品。也不会显示错误消息。如果您转到另一个页面或刷新产品视图页面,则会显示错误消息,并且购物车中的商品数量将是正确的。
所以我的想法是我需要在执行周期的早期运行这段代码,但我不知道我应该观察什么事件,或者我是否根本不应该使用观察者。我尝试使用 sales_quote_load_after,但不知何故导致了递归错误。谁能告诉我应该在何时/何地运行此代码?
另一个疯狂的想法可能是因为我使用的是数据库会话而不是文件系统?