当优惠券应用于结账页面时,事件观察器未从自定义模块启动


Event observer not firing from custom module when coupon is applied on checkout page

我想在结账过程中应用优惠券后做点什么。我在Observer.php中使用了"catalogrule_after_apply"事件和相应的函数。优惠券仍在应用中,没有击中我的Observer方法。我有其他事件触发,所以无效的xml不会出现这种情况。问题可能是我使用的事件,但我找不到任何其他事件能产生同样的效果。建议?

etc/config.xml

<config>
       <events>
            <catalogrule_after_apply>
                <observers>
                    <promosource>
                        <type>singleton</type>
                        <class>promosource/observer</class>
                        <method>addSourceIdToSessionFromCoupon</method>
                    </promosource>
                </observers>
            </catalogrule_after_apply>
        </events>
</config>

Helper/Observer.php

<?php
class Russ_Promosource_Model_Observer
{
    public function __construct()
    {
    }
    public function addSourceIdToSessionFromCoupon($observer) {
                die ('event observer worked');
    }
}

提前谢谢。

当您在管理员中单击"应用规则"时,会触发您观察到的事件
对于你想做的事情,我会使用salesrule_validator_process事件。你是观察者,然后可以访问应用的规则:

    public function couponApplied($observer)
    {
        $rule = $observer->getEvent()->getRule();
        $couponCode = $rule->getCouponCode();
        $ruleId = $rule->getRuleId();
    }

HTH