0

我正在尝试向 Magento 添加一个模块,该模块将观察者附加到 sales_order_invoice_register 事件,但无法使其正常工作。

我有一个小脚本,它只执行以下操作:

require_once('app/Mage.php');
Mage::app();
Mage::dispatchEvent('sales_order_invoice_register');

当我从 Magento 安装根目录中的命令行执行该脚本时,会按预期触发观察者方法,因此我认为所有内容都使用模块正确配置(在我的模块 config.xml 的全局部分中)。

但是,当我创建一个订单,然后从管理页面发货并开具发票时,我可以看到事件被调度但观察者没有被触发。这似乎是因为 Config.php 的 getEventConfig() 方法在查找 $_eventAreas['global'] 时不包含我在自己的 config.xml 中添加的条目(也不包含 sales_order_invoice_register 事件的任何其他条目)。有谁知道这是如何发生的,以及如何解决它?

4

1 回答 1

0

对不起,我要回答我自己的问题。

已经看了几个小时了,只是把它写在上面就让我注意到了一些更强烈的东西。从命令行运行而不是通过 apache 运行时它如何工作?配置必须没问题,不幸的是文件所有权不是。我使用自己的用户而不是 Web 服务用户从命令行运行。我使用自己的用户而不是 Web 服务用户创建了模块配置文件。因此,对于扫描模块目录时的 Web 服务进程,我的新模块配置将不可见,导致它无法加载。我只是将文件 chown 给 Web 服务用户,它立即工作。

于 2012-11-15T13:44:39.973 回答