リッスンできるすべてのイベントの包括的なリストはありますか?
このリストが存在しない場合、すべてのイベントを取得するためにデバッグする最適な方法は何ですか?
完全なリストを見つけることはできません。しかし、app/Mage.php にアクセスすると、関数「dispatchEvent()」内にデバッグ コードを挿入して、進行中のすべてのイベントをログに記録できます。
$params = array();
foreach (array_keys($data) as $key) {
if (is_object($data[$key])) {
$params[] = $key.' ('.get_class($data[$key]).')';
} else {
$params[] = $key.' ('.gettype($data[$key]).')';
}
}
Mage::log('event_name:'.$name.',event_passed_keys:'.implode('|',$params),null,'events.log',true);
次に、いくつかの Excel ウィザードを使用して、それらを解析して、渡されるすべてのイベント名とパラメーターのリストに変換できます。
コンパイルされたリストの多く、または上記のように grep を実行する際の問題は、多くのイベントが動的に作成されることです。これにより、リストされていないイベントを識別できます。
デバッグ コードまたは events.log ファイルが短時間で巨大になることをコメント アウトしてください。
イベント一覧はこちら@
また
開発環境の特定のページのすべてのイベントをログに記録するには、追加できますMage::log($eventName);
/app/code/core/Mage/Core/Model/App.php 内
public function dispatchEvent($eventName, $args){
Mage::log($eventName);
....
また
grep -r Mage::dispatchEvent /path/to/your/Magento/* > events.txt
続きを読む @
演習として、イベントの大まかなリストを生成する Bash スクリプトを作成しました (実際には、コンテキストと使用可能なパラメーターを提供するためのいくつかのスイッチを grep するラッパーとして機能します)。
このスクリプトを使用して、バージョン 1.3.3.0 から 1.8.0.0 バージョンのデフォルトの Magento インストールのイベント リストを生成しました。コードは GitHub で入手できます。
https://github.com/Marko-M/magento-events-list/
イベントのリストはこちらから入手できます:
https://github.com/Marko-M/magento-events-list/tree/master/magento-outofthebox
私のブログのフォローアップ記事はこちら:
http://www.techytalk.info/bash-script-to-generate-list-of-events-for-magento-installation/
多くのイベント名が動的に生成されるため、これらのリストは決して完全ではないことに注意してください。
おそらくプロジェクトに拡張機能があり、それらが独自のイベントをディスパッチするため、grep または私のスクリプトを使用して手動でこのリストを生成することをお勧めします。
乾杯!