0

カートに商品が追加されたときに発生するイベントを観察しています。これは私が使用したチュートリアルです:http://inchoo.net/ecommerce/magento/dispatching-before-and-after-events-to-magento-core-actions/

ある条件下で、カートに商品を追加するプロセスを停止したいと思います。例外をスローしようとしましたが、リクエストエラーメッセージの処理中にエラーが発生しました。Magentoによって作成されたレポートを確認しても、何もわかりません。他にどのように追加プロセスを停止できますか?

これは私のコードです:

public function hookToAddToCartBefore($observer) {
    ...
    if(somecondition) {
         Mage::throwException('some message');
    }
}
4

1 に答える 1

1

特徴:

  • 後にエラーメッセージをクリア
  • すべての「カートに追加」コードをスキップ
  • その後、選択したページにリダイレクトします

「カートに追加」を適切に中止するために考えられるすべてのことを試した後、ソースをステップスルーしてフラグ FLAG_NO_DISPATCH を発見しました。パラメータを変更したりリダイレクトを設定したりする他の試みは、「カートに追加」プロセスでさらにコードによって上書きされます。

    Mage::app()->getResponse()->setRedirect($store_product->getProductUrl());
    Mage::getSingleton('checkout/session')->addError(Mage::helper('checkout')->__('Sorry, the price of this product has been updated. Please, add to cart after reviewing the updated price.'));
    $observer->getControllerAction()->setFlag('', Mage_Core_Controller_Varien_Action::FLAG_NO_DISPATCH, true);  

エラーの代わりに、通知を表示できます。

Mage::getSingleton('core/session')->addNotice('Sorry, this product is currently not available...');
于 2013-02-06T20:17:46.263 に答える