0

オブザーバーを sales_order_invoice_register イベントにアタッチするモジュールを Magento に追加しようとしていますが、うまく機能しません。

次のことを行う小さなスクリプトがあります。

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

Magento インストールのルートでコマンドラインからそのスクリプトを実行すると、オブザーバー メソッドが期待どおりにトリガーされるため、すべてがモジュールで正しく構成されていると思います (モジュール config.xml のグローバル セクション内)。

ただし、注文を作成して出荷し、管理ページから請求すると、イベントはディスパッチされますが、オブザーバーはトリガーされません。これは、$_eventAreas['global'] を検索するときの Config.php の getEventConfig() メソッドに、自分の config.xml に追加したエントリ (また、sales_order_invoice_register イベントの他のエントリ) が含まれていないことが原因のようです。これがどのように発生する可能性があり、それを修正するために何をすべきか誰にも考えがありますか?

4

1 に答える 1

0

すみません、自分の質問に答えます。

数時間見ていましたが、上に書き出すだけで、より強調されたことに気づきました。apache ではなくコマンドラインから実行すると、どのように機能しますか? 構成はうまくいく必要がありましたが、残念ながらファイルの所有権はうまくいきませんでした。Web サービス ユーザーではなく、自分のユーザーを使用してコマンド ラインから実行していました。Web サービス ユーザーではなく、自分のユーザーでモジュール構成ファイルを作成しました。したがって、モジュール ディレクトリをスキャンするときの Web サービス プロセスでは、新しいモジュール構成が非表示になり、ロードされませんでした。ファイルをWebサービスユーザーにchownしただけで、すぐに機能しました。

于 2012-11-15T13:44:39.973 に答える