获取当前已分派事件的列表

时间:2011-03-31 12:41:44

标签: magento

我知道这个问题可能看起来很奇怪,但我想获得一份当前发送的事件清单。 问题是我是一个懒惰的人,我想检查'checkout_cart_add_product_complete'是否已经被触发而没有为它创建一个观察者。

所以我的想法是获取所有已调度事件的数组,并在其上执行in_array:)

我认为Mage :: getEvents() - > getAllEvents()会抛出一些信息,但它只返回一个空数组。

我还在lib / Varien / Event文件和文件夹中挖掘了一些但是没有成功地以编程方式创建观察者。是的,我知道,为什么简单而一个人可能很复杂? :)

因此,这个主要问题(获取调度事件列表)隐藏了另一个(对于纯知识)将是“如何以编程方式创建观察者”。

您怎么看?

非常感谢!

2 个答案:

答案 0 :(得分:1)

看一下dispatchEvent,您会看到事件只通过SimpleXML从各种config.xml文件中加载。除了覆盖Mage_Core_Model_App之外,我看不到任何拦截方法。

当然不能有一个event-dispatched-event会创建一个无限循环,所以没有办法观察所有事件。

如果您需要查看开发事件,我的建议是使用您的调试器在dispatchEvent中设置断点,这样您不仅可以查看事件名称,还可以查看作为参数传递的对象。我试过other ways before,但这对我来说最方便。

答案 1 :(得分:0)

我需要做同样的事情,我认为可以通过Mage_Core_Model_Config中的函数getEventConfig来欺骗magento。您可以强制他自动添加默认观察者。