バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

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

サイト内検索

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

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
bigslope
投稿日時: 2017/2/28 23:15
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 42
プラグインのイベント処理でデータを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
投稿: 671
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
居住地:
投稿: 42
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
投稿: 671
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
居住地:
投稿: 42
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
居住地:
投稿: 572
Re: プラグインのイベント処理でデータをtwigに渡したい
横から失礼します。
今までいくつかプラグインを開発していますが、
個別フックポイント内の処理でtwigに対して、
新しい変数を追加して渡した事が無いのですが、出来ないのでは無いでしょうか?

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

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


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
■360°画像ビューワーimg360
■ECCUBE技術資料blog

bigslope
投稿日時: 2017/3/1 15:36
対応状況: −−−
常連
登録日: 2016/12/9
居住地:
投稿: 42
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
投稿: 671
Re: プラグインのイベント処理でデータをtwigに渡したい
そういった目的だったのですね。
解決して良かったです!


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


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

 



ログイン


EC-CUBEガイドブック

統計情報

総メンバー数は19,518名です
総投稿数は81,798件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1623
4
yuh
1346
5
red
1055
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
782
10
umebius
671
11
tao_s
646
12 sumida 638
13
homan
633
14 karin 609
15
468
572
16 DELIGHT 571
17
patapata
502
18
flealog
483
19 tonton 436
20
ecbg
387


ネットショップの壺

EC-CUBEガイドブック
Copyright© LOCKON CO.,LTD. All Rights Reserved.