質問 > 管理機能 > EventArgs eventDispatcherについて教えてください。 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
fffggg |
投稿日時: 2021/12/20 18:00
対応状況: −−−
|
新米 登録日: 2021/11/11 居住地: 投稿: 8 |
EventArgs eventDispatcherについて教えてください。 ▼テンプレート
[EC-CUBE] 4系 [レンタルサーバ] 不明 [OS] windows10 [PHP] 7.1.3 [データベース] SQL、 [WEBサーバ] 不明 [ブラウザ] Chrome [導入プラグインの有無] 諸々 [カスタマイズの有無] 有 [現象] 特に管理画面などのコントローラの中で"EventArgs"や"eventDispatcher"などを頻繁に目にするのですが,それらが何をしているのか全く分かりません。 eventDispatcherとSymfonyのドキュメントを検索すると,"event dispatcher componet", (https://symfony.com/doc/current/components/event_dispatcher.html) が出てくるのですが,これを読めば,eccubeでどういう使われ方をしているのかわかるようになりますか? また,eventArgsについては,symfonyのドキュメントにはそれについての情報がないので,何か説明や,説明をしているページのリンクを教えていただけますでしょうか。 |
468 |
投稿日時: 2021/12/21 15:14
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: EventArgs eventDispatcherについて教えてください。 ECCUBEのPHPソース内に出てくるeventDispatcherですが
プラグインやカスタマイズしたソース等本体以外で定義した処理を実行させるフックポイントになります。 (自作した処理を挿入できる場所になります) $this->eventDispatcher->dispatch(XXXXXX, $event); ほとんど上記のような使われ方をしていると思いますが プラグイン側で第1引数のXXXXXXの文字列を指定して任意のフックポイントに処理を挿入する事ができます。 (第1引数のXXXXXXを元に有効化されたプラグイン内のイベントを探して実行します) EventArgsはそのプラグイン側の処理に渡すデータを格納したオブジェクトになります。 渡されるデータはフックポイント毎に異なる為、ソースコードを直接確認する必要があるかと思います。 フックポイントの利用方法は以下のページが分かりやすいかと思います。 https://kumahiyo.com/event-subscriber/ eccube4.0.1の管理画面 商品一覧ページを表示する際の
を例にすると 第一引数はEccubeEvents::ADMIN_PRODUCT_INDEX_SEARCH となっています。 自作したクラス側で function getSubscribedEvents()に
のような定義をすると同じ自作クラス内の
がProductController.php 256行目で呼び出されるようになります。 自作クラスfunction aaa()には 引数に$eventが渡ってきますが、この時の$eventの中身は ProductController.php 248~254行目で定義されたdispatch()の第2引数
が渡ってきます。 $event->getArgument("qb")や$event->getArgument("searchData")を指定する事で 必要なデータを参照する事ができます。
|
fffggg |
投稿日時: 2021/12/21 20:35
対応状況: −−−
|
新米 登録日: 2021/11/11 居住地: 投稿: 8 |
Re: EventArgs eventDispatcherについて教えてください。 shirohachi様
ご丁寧に解説,また理解の助けになる記事をご紹介いただき,ありがとうございました!! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |