Magentoイベントの完全なリストはどこにありますか?
-
16-10-2019 - |
質問
Magentoにはイベントと呼ばれるフックのようなシステムがあることを知っています。誰かが完全なリストやスクリプトを使用して、どのイベントを呼び出すことができるかを判断するために使用できますか?
解決
ほとんどのイベントが動的に指定されているため、すべてのMagentoイベントのリストはありません。
あなたが私に尋ねると、これらの重要なイベント(および結果)を知っていることは良い出発点です(ニックのリストの横に):
mage_core_model_abstractから拡張されたすべてのオブジェクトは、読み込み、保存、削除に関する多くのイベントを発送します。
app/code/core/Mage/Core/Model/Abstract.php:255
Mage::dispatchEvent($this->_eventPrefix.'_load_before', $params);
// e.g. sales_order_load_before, checkout_cart_load_before
たとえば、オブジェクトがロードされた後、チェックを追加するために
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
保存する前にオブジェクトに追加のデータを追加するには
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
「親」が保存された後、他のモデルを保存する
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
モデルが削除される前に、クリーンアップします
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
モデルが削除される前にクリーンアップします - または、その後も?あなたはまだ取引中です!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
エンティティが削除されていることを確認したい場合
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
mage_core_model_resource_db_collection_abstractから拡張されたコレクションには、2つの一般的なイベントもあります。
例:SQLを変更してコレクションをロードするには:
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:588
Mage::dispatchEvent($this->_eventPrefix.'_load_before', array(
$this->_eventObject => $this
));
// e.g. sales_order_status_history_collection_load_before
例:オブジェクトに追加データを追加するには:
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:637
Mage::dispatchEvent($this->_eventPrefix.'_load_after', array(
$this->_eventObject => $this
));
// e.g. sales_order_shipment_collection_load_after
他のヒント
血まみれをしてください grep 'Mage::dispatchEvent' app/ -rsn
これにより、インストールに固有のイベントのリストが提供されます。イベントのリストは、Magentoバージョン、カスタマイズ、インストールされた拡張機能によって異なる場合があります。
私はこれを素敵なチートシートとして使用しています http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/. 。 1.7で呼び出すことができるすべてのイベントがあります。
私はこの質問が答えられたことを知っています私はちょうどここに私の道を追加するだけです:
- ブラウザで観察したいページを準備します
- アプリ/mage.phpを開きます
- にとって
public static function dispatchEvent
(ln:〜446)最初に私が追加する//Mage::log($name, null, 'events.log', true);
- そのラインの解消、
- 私がオンになっているページを更新します
- その行をもう一度コメントしてください
次に、var/log/events.log(〜40kb)を開き、そのページでのみ多くのイベントをご覧ください! :)
答えはすでに受け入れられていますが、とにかく私の答えを未来のために投稿してください:
Magentoにあるイベントのリストをご覧になりたい場合は、3つのオプションがあります。
1) Googleのために、Magentoイベントのリストをまとめた人がたくさんいます
2) フックするモジュールを作成します controller_action_predispatch
他のイベントの前に呼ばれるイベントであるイベントが呼び出されます。このモジュール内では、発送されたイベントをログに記録できます。
config.xmlに以下を追加します
<events>
<controller_action_postdispatch>
<observers>
<controller_action_after>
<class>yourmodule/observer</class>
<method>hookToControllerActionPostDispatch</method>
</controller_action_after>
</observers>
</controller_action_postdispatch>
</events>
そして、Yourmodule/Model/Observerの内部:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
上記は、発送されたすべてのイベントを記録します...
3) SSHアクセスがある場合は、次のコマンドを実行して、すべてのイベント(およびそれらが発送されているファイル)の概要を取得できます。
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
私は、ロードされたページで観察できるイベントを表示する素晴らしい機能を備えたMagento開発者ツールバーを使用しています。
ここでは、既存のイベントのほとんどを表示できます。http://www.magentocommerce.com/wiki/5_modules_and_development/reference/magento_events
MagentoのCore MageモジュールでGrepを作成し、リストを遵守しました。
指摘されているPSには、Magentoの非推奨機能内にあるイベントが含まれている可能性があるため、実装前にファイルと行の参照を確認してください。
提案のために開いています!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
以前にリストされたGREPコマンドは複製(多く)にレンダリングされ、動的に生成されたイベント名を理解するために必要なイベントプレフィックスのリストをカバーしません。これらのコマンドは、両方のリストを一意の値のみでレンダリングします。他のグレップの回答のように-nフラグを追加して、私が思うの行番号を取得することができます。しかし、質問はコードのどこにあるのか尋ねませんでした。 〜_〜
http://www.magentocommerce.com/wiki/5_modules_and_development/reference/magento_events
ここでは、オブザーバーイベントの完全なリストを見つけることができます。
これらのチートシートを参照してください
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
それはあなたに役立ちます。
シングルリンクでバックエンド +フロントエンドイベントのすべてのリストを見つけることができます
http://www.magentocommerce.com/wiki/5_modules_and_development/reference/magento_events
誰かが更新されたリストを必要としている場合、私はこれを最新の状態に保とうとしています:
https://gist.github.com/digitalpianism/d8157c6b492238afed7809e5e3a134e
URLをフォローすることにより、すべてのMagento-1Xイベントを見つけることができます。 https://magento2.atlassian.net/wiki/display/m1wiki/magento +1.x+ events+ reference