バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > その他 > プラグインのイベント処理でデータをtwigに渡したい

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
bigslope
投稿日時: 2017/2/28 23:15
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 44
プラグインのイベント処理でデータをtwigに渡したい
プラグインのイベント処理でデータをtwigに渡したい
あるプラグインのイベント処理関数で、twig側にデータを返したいのですが、どのようにすればよいでしょうか?



プラグインのイベント処理関数
public function hogehoge(EventArgs $event)
{
$parameters = $event->getArgument('pagination');
$parameters["test"] = "テスト";
$event->setArgument($parameters);
}

では、ダメでした。
umebius
投稿日時: 2017/2/28 23:26
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 712
Re: プラグインのイベント処理でデータをtwigに渡したい
twig側にデータを渡すには、「Product/list.twig」のようなテンプレートイベントに対してevent.ymlでフックして、$event->setArgument($parameters);すれば良いかと思います。


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


bigslope
投稿日時: 2017/3/1 1:21
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 44
Re: プラグインのイベント処理でデータをtwigに渡したい
「Product/list.twig」だと、イベントの型が、TemplateEvent $eventなので、
$parameters = $event->getParameters();
$event->setParameters($parameters);
とすれば、うまくいきますが、

イベントの型が、EventArgs $eventだと、
$pagination = $event->getArgument('pagination');
$event->setArgument($pagination);
でエラーになり、うまくいきません。

$event->setArgument($parameters);
の箇所で、エラーが発生しているようです。
umebius
投稿日時: 2017/3/1 1:29
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 712
Re: プラグインのイベント処理でデータをtwigに渡したい
あ、申し訳ございません。確かに読み返してみたら間違いが。
twigのTemplateEventに変数渡すのは$event->setParameters($parameters);ですね。

引用:

$event->setArgument($parameters);
の箇所で、エラーが発生しているようです。

引数が1つしかないからでは?

$pagination = $event->getArgument('pagination');
あと、これは値取れているのでしょうか?
EventArgsにpaginationは渡されてなかったように記憶していますが。


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


bigslope
投稿日時: 2017/3/1 8:45
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 44
Re: プラグインのイベント処理でデータをtwigに渡したい
>$pagination = $event->getArgument('pagination');
>あと、これは値取れているのでしょうか?

はい、取れています。

呼び出し元は、
$event = new EventArgs(
array(
'pagination' => $arrRecommendProduct,
),
null
);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_RECOMMEND_LIST, $event);

なので、'pagination' という名前で、データを渡しています。



>twigのTemplateEventに変数渡すのは$event->setParameters($parameters);ですね。

呼び出される側のプラグイン側のイベント関数の、パラメータのデータ型が、
EventArgs $event
となっているので、TemplateEventではなく、EventArgs ですよね?
なので、getArgument() でデータを取得しています。
また、setParameters()が使えません。

tiwgにデータを渡すのは、setParameters()でないと渡せないのでしょうか?

すみません、この辺りがよく理解できていないのですが、教えていただければ幸いです。
468
投稿日時: 2017/3/1 15:08
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 753
Re: プラグインのイベント処理でデータをtwigに渡したい
横から失礼します。
今までいくつかプラグインを開発していますが、
個別フックポイント内の処理でtwigに対して、
新しい変数を追加して渡した事が無いのですが、出来ないのでは無いでしょうか?

umebiusさんがおっしゃられるようにテンプレートフックポイントであれば、
$event->setParameters($parameters);
で渡せると思うのですが・・・。

もしくは、共通フックポイントのresponseイベントでもTwigに値を渡せると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

bigslope
投稿日時: 2017/3/1 15:36
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 44
Re: プラグインのイベント処理でデータをtwigに渡したい
ポイントプラグインのフックポイント内で、
データは、$event->getArgument('pagination')で取得して、
$event->setArgument("point",$tmp) でポイント数を設定すると、

フックポイントの呼び出し側(おすすめ商品管理プラグイン)で、

$event = new EventArgs(
array(
'pagination' => $arrRecommendProduct,
),
null
);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_RECOMMEND_LIST, $event);
$point = $event->getArgument('point');

return $app->render('Block/recommend_product_block.twig', array(
'recommend_products' => $arrRecommendProduct,
'forms' => $forms,
'point' => $point,
));

とすると、
おすすめ商品管理プラグイン内から、ポイントプラグインをフックポイントで呼び出して、商品ごとのポイント数を取得し、twigで表示させることが出来ました。
umebius
投稿日時: 2017/3/1 15:39
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: Tokyo
投稿: 712
Re: プラグインのイベント処理でデータをtwigに渡したい
そういった目的だったのですね。
解決して良かったです!


----------------
//////////////////////////////
(株)U-Mebius EC-CUBE3 カスタマイズ・高速化 ・バグ修正
EC-CUBE関連技術者の採用もお問い合わせください。


bigslope
投稿日時: 2017/3/1 17:02
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 44
Re: プラグインのイベント処理でデータをtwigに渡したい
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 



ログイン


EC-CUBEペイメント

クレジットカード情報の非保持化対応

統計情報

総メンバー数は20,152名です
総投稿数は83,268件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1655
4
yuh
1420
5
red
1068
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
784
10
468
753
11
umebius
712
12
tao_s
651
13 sumida 638
14
homan
633
15 karin 630
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.