我知道这个问题可能看起来很奇怪,但我想获得一份当前发送的事件清单。 问题是我是一个懒惰的人,我想检查'checkout_cart_add_product_complete'是否已经被触发而没有为它创建一个观察者。
所以我的想法是获取所有已调度事件的数组,并在其上执行in_array:)
我认为Mage :: getEvents() - > getAllEvents()会抛出一些信息,但它只返回一个空数组。
我还在lib / Varien / Event文件和文件夹中挖掘了一些但是没有成功地以编程方式创建观察者。是的,我知道,为什么简单而一个人可能很复杂? :)
因此,这个主要问题(获取调度事件列表)隐藏了另一个(对于纯知识)将是“如何以编程方式创建观察者”。
您怎么看?
非常感谢!
答案 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。您可以强制他自动添加默认观察者。