バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > パラメータを指定した動的ブロックの呼び出し方

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
rmaeda
投稿日時: 2019/7/9 11:32
対応状況: −−−
新米
登録日: 2019/7/9
居住地: 京都府
投稿: 3
パラメータを指定した動的ブロックの呼び出し方
[EC-CUBE] 3.0.16
[レンタルサーバ] レンタルサーバ名
[OS] CentOS Linux release 7.4.1708
[PHP] PHP 7.1.19
[データベース] mysql Ver 14.14
[WEBサーバ] Apache/2.4.33
[ブラウザ] Google Chrome
[導入プラグインの有無] 複数プラグイン有り
[カスタマイズの有無] テンプレート修正等

[現象]
プラグイン「タイムセールpro」を利用

コンテンツ管理 > ページ管理
新規にページを作成し、コンテンツ内からブロックを呼び出しています。
ブロックの内容は、カテゴリIDをパラメータで引き渡し
そのカテゴリに紐づくタイムセールの商品一覧を表示するブロック。

呼び出しの記述
カテゴリID:100
{{ render(path('block_sales_product', {category_id: 100})) }}

アクセスログを確認すると、正しくパラメータが引き継がれているのですが、
コントローラーでパラメータの取得ができない状況です。

アクセスログ
eccube.INFO [b20ec879] [a8432248] [NULL]
[RouterListener:onKernelRequest:145] - Matched route "block_sales_product". {"route_parameters":{"_controller":"\\Eccube\\Controller\\Block\\SalesProductController::index",
"_route":"block_sales_product"},
"request_uri":"https://ドメイン名/block/sales_product?category_id=100"}

コントローラーでの記述
$categoryId = $app['request']->get('category_id');


ページ管理から作成したページから、動的ブロックを直接呼び出す場合の、
パラメータの取得についてご教授いただけますでしょうか?


ちなみに、以下のURLへ直接アクセスは問題なし
https://ドメイン名/block/sales_product/100

ということは、新規作成したページ内のブロック呼び出しのロジックに問題ありでしょうか・・・。



468
投稿日時: 2019/7/9 12:29
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: パラメータを指定した動的ブロックの呼び出し方
ブロック用のコントローラーはカスタマイズされたものでしょうか?
試した事がないので感覚的な想像ですが、
ブロックコントローラーへの値の渡し方はGETではなく、URLパラメータを利用する必要があるのではないでしょうか?

イメージ的には以下のようなURLで動作するルーティングを定義する必要があるのではないかと思います。
https://ドメイン名/block/sales_product/100

そう思った理由はtwig上の
{{ render(path('block_sales_product', {category_id: 100})) }}
の箇所では、
実際には通信が発生していないのではないかと思います。
通信が発生していない為、リクエストパラメータのGETが取得できないのではないかと思いました。


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

rmaeda
投稿日時: 2019/7/9 14:22
対応状況: −−−
新米
登録日: 2019/7/9
居住地: 京都府
投稿: 3
Re: パラメータを指定した動的ブロックの呼び出し方
468さん

コメントありがとうございます。
ブロック用のコントローラーもカスタマイズしております。

それぞれのファイルを以下のように変更
1. src/Eccube/ControllerProvider/FrontControllerProvider.php

$c->match('/block/sales_product/{id}', '\Eccube\Controller\Block\SalesProductController::index')->bind('block_sales_product')->assert('id', '\d+');

2. src/Eccube/Controller/Block/SalesProductController.php
public function index(Application $app, $id=null) {...}

3. 新規ページ内でのブロック呼び出し
{{ render(path('block_sales_product', {'id': '100'})) }}


ログを確認
1. site_xxxxxxx.log
eccube.INFO [73b6b8f1] [bfd8b3bd] [NULL] [RouterListener:onKernelRequest:145] - Matched route "block_sales_product". {"route_parameters":{"_controller":"\\Eccube\\Controller\\Block\\SalesProductController::index","id":"100","_route":"block_sales_product"},"request_uri":"https://ドメイン名/block/sales_product/100"} [GET, /user_data/test_block, 153.133.199.188, NULL, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36]

2. front_site_xxxxxx.log
front.ERROR [73b6b8f1] [d1e3c456] [NULL] [LogListener:onKernelException:109] - Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("Some mandatory parameters are missing ("id") to generate a URL for route "block_sales_product"."). (uncaught exception) at /var/www/xxxx/src/Eccube/Resource/template/default/block.twig line 28 {"exception":"[object] (Twig_Error_Runtime(code: 0): An exception has been thrown during the rendering of a template (\"Some mandatory parameters are missing (\"id\") to generate a URL for route \"block_sales_product\".\"). at /var/www/xxxx/src/Eccube/Resource/template/default/block.twig:28, Symfony\\Component\\Routing\\Exception\\MissingMandatoryParametersException(code: 0): Some mandatory parameters are missing (\"id\") to generate a URL for route \"block_sales_product\". at /var/www/xxxx/vendor/symfony/routing/Generator/UrlGenerator.php:151)"} [GET, /user_data/test_block, 153.133.199.188, NULL, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36]


https://ドメイン名/block/sales_product/100
id が正しく取れていない?

idは正しく引き渡していると思うのですが、
何か他にアドバイスが有れば、よろしくおねがいします。



rmaeda
投稿日時: 2019/7/9 15:47
対応状況: −−−
新米
登録日: 2019/7/9
居住地: 京都府
投稿: 3
Re: パラメータを指定した動的ブロックの呼び出し方
468さん

キャッシュが効いていたようで、クリアして再度確認したところ
修正した内容で、問題なく呼び出すことができました。

アドバイス、ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.