質問

私は、顧客購入総購入に上限を設定する手段として、製品にMagento Stockアイテムの「最大販売数量」値を使用するクライアント向けのプラグインを実装しています。

複数のイベント、コントローラーアクションでこの条件を確認する必要があるため、リソースモデルからこの条件をチェックするローカル保護機能を作成できるオブザーバーだけに封じ込めることはできません。

私の要件では、カートの追加を制限します。しかし、私はジレンマにいることに気づきます:コントローラーから addAction 頼る必要があります throw - しかし sales_quote_merge_before 問題のある製品を効果的に設定し、メッセージを投稿することができるようです customer/session, しかし、代わりにコントローラーのアクションと同様に、それぞれ投げることができました。

私の質問は次のとおりです。

  • この悪い習慣は、効果的に頼ることです throw モジュールヘルパーから?
  • これは、むしろ、呼び出す必要があるモデル方法ですか?
  • モジュールを乾燥させることができる最良の設計戦略は何ですか?

編集:

EE 1.12の時点で、私は4つのインスタンスしか見られません Helper/Data.php スローするファイル-3つはAPI2/OAUTHです。 Mage/Coreも一度それを行いますが、これは他の唯一のインスタンスのようです。さまざまなサードパーティは、ここでさまざまなアプローチをとっているように見えます。

フィードバックは大歓迎です。

役に立ちましたか?

解決

顧客に「申し訳ありませんが、それほど購入できません」というのは例外です。予想されるケースは、十分であり、製品をカートに入れることです。そしてもう1つの言葉:Magentoの内部には、たとえばMagentoの中に試してみるブロックがあります \Mage_Checkout_CartController::addAction:

// [...]
} catch (Mage_Core_Exception $e) {
        if ($this->_getSession()->getUseNotice(true)) {
            $this->_getSession()->addNotice(Mage::helper('core')->escapeHtml($e->getMessage()));
// [...]

このように言わせてください:彼らは使用されるためにそこにあります:-)

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top