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;
}