php – Magento在保存客户地址时是否会发送事件?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Magento在保存客户地址时是否会发送事件?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
app / code / core / Customer / etc / config.XMl在Magento保存地址之前和之后注册观察者

<events>
    <customer_address_save_before>
        <observers>
            <customer_address_before_save_viv_observer>
                <class>customer/observer</class>
                <;method>beforeAddressSave</method>
            </customer_address_before_save_viv_observer>
        </observers>
    </customer_address_save_before>
    <customer_address_save_after>
        <observers>
            <customer_addres_after_save_viv_observer>
                <class>customer/observer</class>
                <method>afterAddressSave</method>
            </customer_addres_after_save_viv_observer>
        </observers>
    </customer_address_save_after>
</events>

……但我找不到任何证据证明Magento实际上在任何地方派遣了这些事件:

$grep -RF 'dispatchEvent(' . | grep -F customer_addres
./app/code/core/Mage/Customer/Model/Address/Abstract.PHP:        Mage::dispatchEvent('customer_address_format',array('tyPE' => $formatType,'address' => $this));

据我所知,Mage :: dispatchEvent(…)是Magento关闭事件的唯一方法.这些事件真的发生了吗? (我希望如此,因为我真的可以使用一些在地址上发射的事件来节省时间.)

解决方法

是的,它发送,但有些事件很难找到调度的地方,因为magento动态地执行此操作.几乎所有核心​​模型都会在保存时发生这种情况Magento发送这样的事件:

Mage::dispatchEvent($this->_eventPRefix.'_save_before',$this->_getEventData());
Mage::dispatchEvent($this->_eventPrefix.'_save_after',$this->_getEventData());

因此grep将无法找到发送此事件的位置.

例如,模型“Mage_Customer_Model_Address”扩展了类“Mage_Customer_Model_Address_Abstract”,它设置了$_eventPrefix =’customer_address’,并且在_beforeSave()和_afterSave()方法中的Mage_Core_Model_Abstract中调度了事件.

脚本宝典总结

以上是脚本宝典为你收集整理的php – Magento在保存客户地址时是否会发送事件?全部内容,希望文章能够帮你解决php – Magento在保存客户地址时是否会发送事件?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。