プラグイン > 開発について > プラグインのイベントフックについて |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
panchon |
投稿日時: 2018/11/18 23:21
対応状況: −−−
|
新米 登録日: 2018/11/18 居住地: 投稿: 4 |
プラグインのイベントフックについて ▼テンプレート
[EC-CUBE] 4.0、新規インストール [レンタルサーバ] ローカル開発環境 [OS] 使用しているOS: Mac Siera [PHP] 使用しているPHPのバージョン:7.1 [データベース] 使用しているDB名、バージョン: sqlite [WEBサーバ] 使用しているWEBサーバ名、バージョン: apache [ブラウザ] 使用しているブラウザ名、バージョン: chorome [導入プラグインの有無] あれば導入プラグインを記載: なし [カスタマイズの有無] あればカスタマイズ内容を記載(できるだけ具体的に) [現象] プラグインのEvent.phpにて public static function getSubscribedEvents() { return ['admin.order.edit.index.complete' => 'methodName'] // return []; } public function methodName(Event $event) { var_dump($event); exit; } と記述すると管理画面のオーダー一覧にアクセスすつろダンプ結果が 表示されるかと思いましたが表示されません。 特定のページアクセス時に外部APIの実行を行いたいと考えておりますが どのように実装すればいいでしょうか。 |
sw_tm |
投稿日時: 2018/11/19 10:38
対応状況: −−−
|
常連 登録日: 2018/5/25 居住地: 投稿: 43 |
Re: プラグインのイベントフックについて エラーは、出ていますか?
以下の修正でデバックできませんか?
↓ 修正
|
panchon |
投稿日時: 2018/11/19 19:16
対応状況: −−−
|
新米 登録日: 2018/11/18 居住地: 投稿: 4 |
Re: プラグインのイベントフックについて ご教授の程ありがとうございます。
下記、試してみましたが管理者側の注文画面にアクセスしても フックされませんでした。 public function methodName(EventArgs $event) { var_dump($event); exit; } 画面遷移の過程ではエラーはでておりません。 また、ログを確認して見ましたがINFOログ以外は特にでておりません。 |
sw_tm |
投稿日時: 2018/11/20 10:28
対応状況: −−−
|
常連 登録日: 2018/5/25 居住地: 投稿: 43 |
Re: プラグインのイベントフックについて こちらのイベントは、注文情報更新完了時だと思われます。
admin.order.edit.index.complete 注文画面であれば、下記のイベントをお試しください。 admin.order.edit.index.initialize |
panchon |
投稿日時: 2018/11/20 12:26
対応状況: −−−
|
新米 登録日: 2018/11/18 居住地: 投稿: 4 |
Re: プラグインのイベントフックについて ありがとうございます。
他に有効になっているプラグインがあったので、そちらをdisableにし、 admin.order.edit.index.initializeに変更後 admin/order/newにアクセスするとイベントが発火されました。 しかし、「システムエラーが発生しました。」と表示され var/log/front-2018-11-20.logを確認すると以下が出力されました。 [2018-11-20 12:02:17] php.CRITICAL [qgtc0jv1aiv3ovv6fqv50jq9da] [f793343] [1] [Symfony\Component\Debug\ErrorHandler:handleException:571] - Type error: Argument 1 passed to Plugin\plugintool\Event::methodName() must be an instance of Plugin\plugintool\Event, instance of Eccube\Event\EventArgs given, called in /Applications/MAMP/htdocs/eccube-4.0.0-2-5/vendor/symfony/event-dispatcher/EventDispatcher.php on line 212 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Type error: Argument 1 passed to Plugin\\plugintool\\Event::methodName() must be an instance of Plugin\\plugintool\\Event, instance of Eccube\\Event\\EventArgs given, called in /Applications/MAMP/htdocs/eccube-4.0.0-2-5/vendor/symfony/event-dispatcher/EventDispatcher.php on line 212 at /Applications/MAMP/htdocs/eccube-4.0.0-2-5/app/Plugin/plugintool/Event.php:20)"} [GET, /eccube-4.0.0-2-5/admin/order/new, 127.0.0.1, http://127.0.0.1:8888/eccube-4.0.0-2-5/admin/order, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36] EccubeのEventArgsではなく、プラグインのEventArgsをインスタンス化して渡してほしい旨のメッセージと解釈しておりますが、こちらについて何か追加で記述するところ等ありますでしょうか。 ご教授頂けると幸いでございます。 |
shimbo |
投稿日時: 2018/12/12 11:47
対応状況: −−−
|
半人前 登録日: 2018/10/5 居住地: 投稿: 27 |
Re: プラグインのイベントフックについて 前後精読していませんので間違っていたらすみませんが、useの指定を入れていないので、EventArgsがプラグイン内にあるはず、と解釈されているのではないでしょうか。
を挿入してみてはいかがでしょう。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |