Magento 在结帐时,优惠券总是重新添加的

Magento 在结帐时,优惠券总是重新添加的,magento,magento-1.9,Magento,Magento 1.9,我遇到了以下错误 将产品添加到购物车 应用优惠券代码 删除优惠券代码 优惠券代码不再显示/删除成功 结帐 继续计费和发货步骤 坐马车回去 步骤#2的优惠券代码再次激活 这似乎是CE1.9中的一个bug 在Mage_Checkout_CartController::couponPostAction()中设置了一个新的会话值 这将还原Mage_Checkout_Model_Type_Onepage中的优惠券代码::_setCartCouponCode() 我通过事件/观察者解决了它 <

我遇到了以下错误

  • 将产品添加到购物车
  • 应用优惠券代码
  • 删除优惠券代码
  • 优惠券代码不再显示/删除成功
  • 结帐
  • 继续计费和发货步骤
  • 坐马车回去
  • 步骤#2的优惠券代码再次激活

  • 这似乎是CE1.9中的一个bug

    在Mage_Checkout_CartController::couponPostAction()中设置了一个新的会话值

    这将还原Mage_Checkout_Model_Type_Onepage中的优惠券代码::_setCartCouponCode()

    我通过事件/观察者解决了它

        <events>
            <controller_action_predispatch_checkout_cart_couponPost>
                <observers>
                    <remove_session_coupon_code>
                        <type>singleton</type>
                        <class>yourmodule/observer</class>
                        <method>removeCoupon</method>
                    </remove_session_coupon_code>
                </observers>
            </controller_action_predispatch_checkout_cart_couponPost>
        </events>
    
    protected function _setCartCouponCode()
    {
        if ($couponCode = $this->getCheckout()->getCartCouponCode()) {
            $this->getQuote()->setCouponCode($couponCode);
        }
        return $this;
    }
    
        <events>
            <controller_action_predispatch_checkout_cart_couponPost>
                <observers>
                    <remove_session_coupon_code>
                        <type>singleton</type>
                        <class>yourmodule/observer</class>
                        <method>removeCoupon</method>
                    </remove_session_coupon_code>
                </observers>
            </controller_action_predispatch_checkout_cart_couponPost>
        </events>
    
    public function removeCoupon(Varien_Event_Observer $observer)
    {
        $controller = $observer->getControllerAction();
        if ($controller->getRequest()->getParam('remove') == 1) {
            Mage::getSingleton("checkout/session")->unsetData('cart_coupon_code');
        }
        return $this;
    }