我有觀察者觀看事件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/ –