php – Magento在保存客户地址时是否会发送事件?
发布时间:2020-12-13 22:04:49 所属栏目:PHP教程 来源:网络整理
导读:app / code / core / Customer / etc / config.xml在Magento保存地址之前和之后注册观察者: events customer_address_save_before observers customer_address_before_save_viv_observer classcustomer/observer/class methodbeforeAddressSave/method /cus
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中调度了事件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |