Magento observer - 取消优惠券代码时使用哪个事件
Magento observer - Which event to use when a coupon code is canceled
我正在构建一个模块,可在输入特定优惠券代码时将免费产品添加到购物车。
我有一个事件观察器,它会在购物车中应用新的优惠券代码时触发:
我的配置中的事件是这样的:
<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>
这工作正常,如果添加了正确的优惠券代码,我可以成功添加免费产品。
现在我需要做的是在客户取消优惠券代码时删除免费产品。
但是我正在使用的事件在取消优惠券时不会触发。
有没有我可以用来检查优惠券代码是否被删除的事件?
谢谢
您可以在
中的 couponPostAction()
操作中触发您的自定义事件
app/code/core/Mage/Checkout/controllers/CartController.php
在此您将看到处理错误优惠券以及优惠券表格是否没有价值的代码。您可以在那里触发您的自定义事件并在您的模块中收听该事件。
希望这会完成你的工作。
谢谢
我可能会观察 controller_action_predispatch_checkout_cart_couponPost
事件并检查是否设置了 remove
参数,这是触发 Mage_Checkout_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>
Model/Observer.php
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;
}
我正在构建一个模块,可在输入特定优惠券代码时将免费产品添加到购物车。
我有一个事件观察器,它会在购物车中应用新的优惠券代码时触发: 我的配置中的事件是这样的:
<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>
这工作正常,如果添加了正确的优惠券代码,我可以成功添加免费产品。
现在我需要做的是在客户取消优惠券代码时删除免费产品。
但是我正在使用的事件在取消优惠券时不会触发。
有没有我可以用来检查优惠券代码是否被删除的事件?
谢谢
您可以在
中的couponPostAction()
操作中触发您的自定义事件
app/code/core/Mage/Checkout/controllers/CartController.php
在此您将看到处理错误优惠券以及优惠券表格是否没有价值的代码。您可以在那里触发您的自定义事件并在您的模块中收听该事件。 希望这会完成你的工作。 谢谢
我可能会观察 controller_action_predispatch_checkout_cart_couponPost
事件并检查是否设置了 remove
参数,这是触发 Mage_Checkout_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>
Model/Observer.php
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;
}