Magentoには、イベントと呼ばれるフックのようなシステムがあることを知っています。誰が呼び出すことができるイベントを決定するために使用できる完全なリストまたはスクリプトを持っていますか?
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
_eventPrefix
モデルイベント、目標と要求イベント、時折、便利な汎用的なブロックイベント、およびイベントを見つけるためにログインすることの重要性については
app/code/core/Mage/Core/Model/App.php
とmage::log($eventName,null,'events.txt',true);
するdispatchEvent
方法。観察しようとしているページを読み込みます。明らかにこれをそのままにせず、var / logs / events.txtが作成されたら元に戻します。汚い、はい。クイック、はい。:)
流血のは、DO grep 'Mage::dispatchEvent' app/ -rsn
イベントのリストがインストールMagentoのバージョン、カスタマイズや拡張に応じて変えることができるので、これは、インストールに固有のイベントのリストを提供します。
sales_order_place_after
が起こると主張しますが、それを起動する呼び出しはからコメントアウトされているようですCheckout/Type/Onepage.php
。
これを素敵なチートシートhttp://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/として使用します。1.7で呼び出すことができるすべてのイベントがあります。
私はこの質問に答えていることを知っています、ここに私の方法を追加します:
public static function dispatchEvent
、私は追加初めで:(〜446 LN)
//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/
controller_action_predispatch
特に前に発生したイベントがいくつかありますcontroller_front_init_before
。2)このアプローチは、ディスパッチされたすべてのイベントをログに記録するだけではありません。これはタイプミスまたは不完全なセクションですか?
ロードされたページで観察できるイベントを表示する素晴らしい機能を備えたMagento Developer Toolbarを使用しています。
ここでは、既存のイベントのほとんどを表示できます:http : //www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
MagentoのコアMageモジュールでgrepを実行し、リストを作成しました。
PS指摘したように、Magentoの非推奨の関数内にあるイベントが含まれている可能性があるため、実装前にファイルと行の参照を確認してください。
提案のために開いてください!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
前述のgrepコマンドは重複(多く)をレンダリングし、動的に生成されるイベント名を理解するために必要なイベントプレフィックスのリストをカバーしません。これらのコマンドは、両方のリストを一意の値のみでレンダリングします。他のgrep回答のように-nフラグを追加して、行番号iを取得できます。しかし、質問では、コード内のすべてがどこにあるかは尋ねませんでした。〜_〜
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/d8157c6b492238af2ed7809e5e3a134e
urlをフォローすると、すべてのmagento-1xイベントを見つけることができます。https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference