2

我在函数 dispatchEvent($name, $data) 下将这一行添加到 /app/Mage.php 中,就在 return 语句的上方:

 Mage::log($name, null, 'events.log');

但是,我的 events.log 仅显示 3 个不同的事件:

2013-02-13T21:46:21+00:00 DEBUG (7): resource_get_tablename
2013-02-13T21:46:21+00:00 DEBUG (7): core_collection_abstract_load_before
2013-02-13T21:46:21+00:00 DEBUG (7): core_collection_abstract_load_after

这三个只是一遍又一遍地重复。没有其他事件名称出现。这是否意味着其他事件没有以某种方式触发?

4

1 回答 1

2

我想出了解决方案。使用有问题的代码行,在有问题的文件和函数中,系统 > 配置 > 高级 > 开发人员 > 日志设置 > 启用日志记录设置为“否”,我只得到问题中列出的三个事件,输出到日志文件。

如果我将该设置设置为“是”,那么我会得到每个被触发的事件。这似乎是“对愚蠢问题的明显回答”,但由于我将日志记录代码硬编码到处理事件的函数中,所以我看不出日志记录设置的重要性。为什么 dispatchEvent() 会根据日志设置获得完全不同的输入?无论日志记录设置如何,它都不需要事件的名称吗?但是,唉,我对 Magento 还很陌生,还没有完全理解其中的想法。

我发现的另一件事是:添加了那一行 Mage:log 代码后,每当我在配置中保存设置时,页面 500 的设置都会被保存。我对此并不担心。

TL;DR:在系统 > 配置 > 高级 > 开发人员 > 日志设置下将“启用日志记录”设置为“是”,然后将代码行添加到 dispatchEvent()。

于 2013-02-14T14:16:42.400 回答