Magento调度和捕获事件

Magento调度和捕获事件,magento,Magento,我和Magento打了一段时间交道,我发现它非常有趣,可能是我未来选择的工作工具。虽然我在理解一些事情上有些困难。如果我调用www.store.com/catalog/product/view/id/2,则产品控制器从catalog核心模块执行,在该模块中,首先通过_initProduct()方法获取产品,在该方法中调度此事件: Mage::dispatchEvent('catalog_controller_product_init_before', array('controller_acti

我和Magento打了一段时间交道,我发现它非常有趣,可能是我未来选择的工作工具。虽然我在理解一些事情上有些困难。如果我调用www.store.com/catalog/product/view/id/2,则产品控制器从catalog核心模块执行,在该模块中,首先通过_initProduct()方法获取产品,在该方法中调度此事件: Mage::dispatchEvent('catalog_controller_product_init_before', array('controller_action'=>$this)); Mage::dispatchEvent('catalog\u controller\u product\u init\u before',数组('controller\u action'=>this));。 正在调用哪个类/方法?据我所知,这应该是Model文件夹下observer类中的一个方法,并且应该在etc/config.xml文件中定义。
config.xml中定义的某些事件将自动执行。。。(为什么?)?我如何向观察者的方法发送和使用数组数据,因为我看到其中一些方法包含此方法:Mage::app()->reinitStores(),它重新初始化存储、组和网站集合,这并不简单。我觉得这非常强大,我真的很想知道使用观察者和事件的可能性。

事件观察者可以在config.xml中定义,对于系统中活动的任何模块,它们不必在同一模块中定义

您可以通过向事件对象添加信息向事件观察者发送数据,这是在定义为dispatchEvent的第二个参数的数组中完成的。只需向数组中添加更多元素,事件观察者方法就可以从$observer->getEvent()中提取它。您还可以通过调用相同的dispatchEvent方法自由定义自己的事件

大多数Magento模型的一个便利之处是,它们是从Mage_Core_Model_抽象类继承而来的,该抽象类包括以下事件:加载之后、保存之前、保存之后、删除之前和删除之后。例如,产品模型具有“目录\产品\加载\之后”、“目录\产品\保存\之前”等


希望这能为您提供更多关于使用事件可能性的信息。

谢谢您的回答,有时候很难找到答案,但我非常喜欢Magento,它的组织方式和扩展方式。我将与观察员一起研究所有可能性,因为我认为它可以在某些情况下避免覆盖核心文件。