バージョン選択

フォーラム

メニュー

オンライン状況

58 人のユーザが現在オンラインです。 (50 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 57
red もっと...

サイト内検索

プラグイン > 開発について > プラグインのイベントフックについて

開発について

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shimbo
投稿日時: 2018/12/12 11:47
対応状況: −−−
半人前
登録日: 2018/10/5
居住地:
投稿: 27
Re: プラグインのイベントフックについて
前後精読していませんので間違っていたらすみませんが、useの指定を入れていないので、EventArgsがプラグイン内にあるはず、と解釈されているのではないでしょうか。

use Eccube\\Event\\EventArgs;


を挿入してみてはいかがでしょう。

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をインスタンス化して渡してほしい旨のメッセージと解釈しておりますが、こちらについて何か追加で記述するところ等ありますでしょうか。

ご教授頂けると幸いでございます。
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/19 19:16
対応状況: −−−
新米
登録日: 2018/11/18
居住地:
投稿: 4
Re: プラグインのイベントフックについて
ご教授の程ありがとうございます。

下記、試してみましたが管理者側の注文画面にアクセスしても
フックされませんでした。

public function methodName(EventArgs $event) {
var_dump($event);
exit;
}

画面遷移の過程ではエラーはでておりません。
また、ログを確認して見ましたがINFOログ以外は特にでておりません。

sw_tm
投稿日時: 2018/11/19 10:38
対応状況: −−−
常連
登録日: 2018/5/25
居住地:
投稿: 43
Re: プラグインのイベントフックについて
エラーは、出ていますか?

以下の修正でデバックできませんか?

public function methodName(Event $event) {
var_dump($event);
exit;
}

↓ 修正

public function methodName(EventArgs $event) {
var_dump($event);
exit;
}
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の実行を行いたいと考えておりますが
どのように実装すればいいでしょうか。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,689名です
総投稿数は109,935件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1569
9
mcontact
1280
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.