gpt4 book ai didi

php - Magento 在保存客户地址时会发送事件吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:57:55 25 4
gpt4 key购买 nike

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' 并且在 Mage_Core_Model_Abstract 的 _beforeSave() 和 _afterSave() 方法中调度了事件。

关于php - Magento 在保存客户地址时会发送事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com