Magento observer-取消优惠券代码时要使用的事件

Magento observer-取消优惠券代码时要使用的事件,magento,magento-1.9,Magento,Magento 1.9,我正在构建一个模块,在输入特定优惠券代码时将免费产品添加到购物车中 我有一个事件观察者,当一个新的优惠券代码应用到购物篮中时,它会触发: 我的配置中的事件如下: <events> <salesrule_validator_process> <observers> <checkoutApplyCouponToProduct> <type>singleton&l

我正在构建一个模块,在输入特定优惠券代码时将免费产品添加到购物车中

我有一个事件观察者,当一个新的优惠券代码应用到购物篮中时,它会触发: 我的配置中的事件如下:

<events>
    <salesrule_validator_process>
        <observers>
            <checkoutApplyCouponToProduct>
                <type>singleton</type>
                <class>Sulman_Giftwithcoupon_Model_Checkout_Observer</class>
                <method>applyCoupon</method>
            </checkoutApplyCouponToProduct>
        </observers>
    </salesrule_validator_process>  
</events>

独生子女
Sulman\u Giftwith优惠券\u模型\u校验\u观察者
苹果组合
这是正确的作品,我可以添加免费产品成功,如果正确的优惠券代码被添加

现在我需要做的是,如果客户取消了优惠券代码,就删除免费产品

但是当优惠券取消时,我正在使用的事件不会触发

是否有活动可用于检查优惠券代码是否已删除


谢谢

您可以在中的
couponPostAction()
操作中触发自定义事件

app/code/core/Mage/Checkout/controllers/CartController.php

在这里,您将看到一个处理错误优惠券以及优惠券表单没有值的代码。您可以在那里触发自定义事件,并在模块中侦听该事件。 希望这能帮到你。
谢谢

我可能会观察
controller\u action\u predispatch\u checkout\u cart\u couponPost
事件,并检查
remove
参数是否已设置,这将触发
Mage\u checkout\u CartController::couponPostAction
删除优惠券

etc/config.xml

<config>
    <global>
        <events>
            <controller_action_predispatch_checkout_cart_couponPost>
                <observers>
                    <checkoutRemoveCouponProduct>
                        <type>singleton</type>
                        <class>Sulman_Giftwithcoupon_Model_Checkout_Observer</class>
                        <method>removeCoupon</method>
                    </checkoutRemoveCouponProduct>
                </observers>
            </controller_action_predispatch_checkout_cart_couponPost>
        </events>
    </global>
</config>

您将看到$this->\u getSession()->addSuccess($this->\u('优惠券代码已取消');在这个函数中,以及在这一行之上,您可以启动自定义eventPerfect!该事件包括添加和删除优惠券:)@sulman-从某种意义上说,在添加和删除优惠券的过程中都会发生,但您不应使用此事件来表示“已添加优惠券”,因为在执行过程中,优惠券尚未验证并应用于报价。所以你只需要假设输入的代码是正确的,这一点很好。就我而言,这还不错。但我必须做一些有效性检查,以确保一切正常(有效的客户群、有效日期等)。谢谢
public function removeCoupon(Varien_Event_Observer $observer)
{
    /* @var Mage_Core_Controller_Front_Action $controller */
    $controller = $observer->getControllerAction();
    if ($controller->getRequest()->getParam('remove') == 1) {
        // @TODO add logic to remove free product
    }
    return $this;
}