質問 > フロント機能 > 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
katoasr |
投稿日時: 2020/4/28 8:18
対応状況: −−−
|
半人前 登録日: 2020/1/30 居住地: 投稿: 11 |
【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて ▼テンプレート
[EC-CUBE] EC-CUBE4.0.3を新規インストール [レンタルサーバ]使用していない [OS] WIN10 pro [PHP] PHP7.2.26 [データベース] MySQL5.7 [WEBサーバ] httpd-2.4.39 [ブラウザ] Google Chrome [導入プラグインの有無] 無 [カスタマイズの有無]有 [現象] src\Eccube\Event\EccubeEvent.phpに記述のある // index const FRONT_SHOPPING_INDEX_INITIALIZE = 'front.shopping.index.initialize'; をリスナーするcontrollerを作成しましたが実行されません。 controllerにブレークポイントを設定しても処理が停止しないことからcontrollerは実行されていないです。 このEVENTでcontrollerを実行するにはどうすればいいのでしょうか? |
468 |
投稿日時: 2020/4/28 10:03
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて 該当のフックポイントはプラグインで利用するものと思っていますが
プラグインを開発されたという訳ではないのでしょうか?
|
katoasr |
投稿日時: 2020/4/28 10:39
対応状況: −−−
|
半人前 登録日: 2020/1/30 居住地: 投稿: 11 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて Ec3用に開発されたpluginをEc4.0.3に移行する作業を実施しています。Ec3では該当のフックポイントを利用してDBの書き込みをしています。EccubeEventsに該当のフックポイントの記載があったのでそのまま使っています。
|
468 |
投稿日時: 2020/4/28 11:50
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて 3系と4系ではイベントフックとfunctionを紐づける定義の方法が変わっていると思うのですが
その辺りは対応済みですか? 3系はevent.ymlでイベントフックとfunctionを設定していたと思うのですが 4系はEventSubscriberInterfaceを実装したクラスのstatic function getSubscribedEvents()で イベントフックとfunctionを関連付ける仕様になっているかと思います。
|
katoasr |
投稿日時: 2020/4/28 12:53
対応状況: −−−
|
半人前 登録日: 2020/1/30 居住地: 投稿: 11 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて 言葉足らずでした。
3系のevent.ymlから4系のEventSubscriberInterfaceを実装したクラスのstatic function getSubscribedEvents()にしています。 plugin名Event.phpです。 4系へ移行するのに、まずsrc/Eccube/Event/EccubeEventで4系のEVENTフックを確認して、3系のevent.ymlを4系に置き換えています。 EccubeEvents::FRONT_SHOPPING_INDEX_INITIALIZEはsrc/Eccube/Event/EccubeEventに記述していたのでそのまま、getSubscribedEvents()で使っていたのですが、そのEVENTリスナーであるcontrollerが動いてませんでした。 src/Eccube/Event/EccubeEventで定義しているEVENTフックが使えないことはあるのでしょうか? よろしくお願いします。 |
468 |
投稿日時: 2020/4/28 17:28
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて 何度も説明していただき、ありがとうございます。
私が質問の意味を理解できていなかった可能性が高い気がしてきました。 katoasrさんの質問の意図としては、 ShoppingController::index()を通過時に EccubeEvents::FRONT_SHOPPING_INDEX_INITIALIZEイベントフックが実行されないのか?という質問でよろしかったでしょうか? そういった意味でShoppingController.phpのソースを確認してみましたが 確かにイベントフックを呼び出す記述が見当たらない為、 EccubeEvents::FRONT_SHOPPING_INDEX_INITIALIZEイベントフックは実行されないと思います。 ローカルフックポイントは以下の記述で定義されており、 そこを処理が通過する際にプラグイン側の処理が呼び出されるはずですので... $this->eventDispatcher->dispatch(****, ****); 何故、ShoppingController::index()に該当のフックポイントが無いのか理由は分かりません。 何処かにEccubeEvents::FRONT_SHOPPING_INDEX_INITIALIZEイベントフックを呼び出している所があるのか、 ECCUBEソース一式を対象にコード内検索を行いましたが どこにもEccubeEvents::FRONT_SHOPPING_INDEX_INITIALIZEイベントフックを呼び出している箇所はなさそうです。 よって、ShoppingController::index()に自分でフックポイントを追加する必要があるのではないでしょうか?
|
katoasr |
投稿日時: 2020/4/29 5:40
対応状況: −−−
|
半人前 登録日: 2020/1/30 居住地: 投稿: 11 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて 468さん回答ありがとうございます。
質問の意図はその通りです。 自分で追加するしかないのですね。pluginなので本体プログラムには手を入れないように移行しようとしていましたが。 plugin開発していて本体プログラムに手を入れることは今までありましたか? ないので記述するしかないのですが、pluginでなんとかするのがお作法だったりしますか? ちなみに、下記のフックポイントもなかったです。 const FRONT_SHOPPING_CONFIRM_INITIALIZE = 'front.shopping.confirm.initialize'; const FRONT_SHOPPING_CONFIRM_PROCESSING = 'front.shopping.confirm.processing'; const FRONT_SHOPPING_CONFIRM_COMPLETE = 'front.shopping.confirm.complete'; |
468 |
投稿日時: 2020/4/29 11:34
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて プラグイン開発において、やむを得ず本体プログラムに手を加えた事はあります。
また、3系の話になりますが 弊社で販売しているプラグインでもプラグインのインストール後に1行だけPHPに追記をお願いしているものもあります。 オーナーズストア運営に質問して そういったプラグインの販売でもOKと回答をいただいていますので。
|
katoasr |
投稿日時: 2020/4/30 4:02
対応状況: 解決済
|
半人前 登録日: 2020/1/30 居住地: 投稿: 11 |
Re: 【EC-CUBE4.0.3】ShoppingController::indexのEVENTについて なるほどわかりました。
教えてくださりありがおとうございます。 今後ともよろしくお願いいたします |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |