2

特定の条件が真になるまで、チェックアウトボタンの機能を停止するために使用できるマジェントメソッドは何ですか? 基本的に、ユーザーはバスケットの製品を削除しましたが、2 つの製品がバスケットに入るまでチェックアウトしてはなりません。

public function deleteAction()
{
    parent::deleteAction();

   if($this->_getCart()->getQuote()->getItemsCount() == 1) {
      $this->addErrorMessage('Please remove one voucher. Or add one More infant milk product');
    }
    }
4

1 に答える 1

4

これは、 config フラグを使用して非常に簡単に実現できcheckout/options/onepage_checkout_enabledます。

public function deleteAction()
{
    parent::deleteAction();

   if($this->_getCart()->getQuote()->getItemsCount() == 1) {

       Mage::app()->getStore()->setConfig('checkout/options/onepage_checkout_enabled',0);
   }

}

補足:

postdispatch コントローラー オブザーバー アクションで処理できるため、ここでコントローラーを書き直す必要はありません。

<events>
    <controller_action_postdispatch_checkout_cart_delete>
        <observers>
            <yourmodule_postdispatch_delete>
                <class>yourmodel/observer</class>
                <method>deletePostdispatch</method>
            </yourmodule_postdispatch_delete>
        </observers>
    </controller_action_postdispatch_checkout_cart_delete>
</events>

オブザーバー メソッドは次のようになります。

public function deletePostdispatch($observer)
{
   if(Mage::getSingleton('checkout/session')->getQuote()->getItemsCount()==1){

       Mage::app()->getStore()->setConfig('checkout/options/onepage_checkout_enabled',0);
   }

}

HTH、乾杯!

于 2013-08-21T00:28:51.630 に答える