未发射/或观察者未在magento中工作的事件

use*_*100 4 debugging events magento observer-pattern

我有一个模块,可以收听一些事件.它在我测试过的至少十几个安装中工作正常.

在特定安装上,我在Magento版本1.4.1.1上安装了它的客户端,它不起作用.当我测试他的系统时,我手动触发事件,例如Mage :: dispatchEvent('..'),观察者会听到它们.

我该怎么看?我不知道这可能是什么原因.

Ala*_*orm 19

这可能发生的原因有几个

  1. 您尝试收听的事件在您的Magento版本中不存在

  2. 有人攻击了核心文件并意外删除了您正在侦听的事件

  3. 有人覆盖了一种方法

  4. 您的观察者设置不正确,Magento没有"看到"它.

  5. 您的观察者设置正确,但旧配置已缓存

我要调试的步骤是

  1. 确保合并的全局配置具有您的事件配置.如果它没有清除你的缓存,直到它出现

  2. 下载源代码的最新版本和diff的你app/code/core/lib/对处女的版本.类型man diff从UNIX提示哟了解比较工具,如果你不熟悉它.

  3. Grep(或ack)您正在尝试收听的事件的核心代码库.

  4. 临时添加日志代码Mage::dispatchEventapp/Mage.php,以确保您正在寻找真的是触发事件.

  5. 首先Mage::dispatchEvent,按照执行路径到调用侦听器的位置,看看为什么Magento中的代码没有调用你的方法

第一次执行此操作将是一个时间接收器,因此请在核心Magento系统代码中记录发生的位置.这样,下次你调试类似的问题时,它会更快(如果你真的想要很好,你可以分享你在这里,你的博客或Magento维基上找到的东西)

  • 要查找的另一件事是config.xml中的<events>标记是否在<frontend>标记或<global>标记内.这个细节可能毁了你一整天:) (3认同)