質問 > フロント機能 > 動的ブロックへの商品コード受け渡しについて |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
popuko |
投稿日時: 2019/5/22 15:22
対応状況: −−−
|
新米 登録日: 2019/4/1 居住地: 投稿: 7 |
動的ブロックへの商品コード受け渡しについて ▼テンプレート
[EC-CUBE] EC-CUBE 3.0.15 [レンタルサーバ] さくら [OS] Mac [PHP] 5.4.45 [データベース] MySQL 5.7.23 [WEBサーバ] Apache [ブラウザ] Chrome [導入プラグインの有無] 商品レビュー [現象] https://umebius.com/eccube/add_dynamic_block_programmatically/ こちらを参考に、レビューをページング表記する動的ブロックの作成に取り掛かっている最中で データベースにある情報をBlockに表記する設定までには至ったのですが、商品コードを受け渡すルーティングの設定がうまく設定できません。 ルーティングの設定に関する情報を教えていただけると幸いです。 現在の設定内容 【ReviewController.php】 class ReviewListController { public function index(Application $app, Request $request, $id) { $Reviews = $app['product_review.repository.product_review'] ->createQueryBuilder('p') ->andWhere('p.del_flg = 0') ->andWhere('p.Status = 1') ->andWhere('p.Product = :productId') ->setParameter('productId', $id) //<- こちらに商品コードを受け渡ししたい ->orderBy('p.update_date', 'DESC') ->getQuery() ->getResult(); return $app->render('Block/reviewlist.twig', array( 'Reviews' => $Reviews )); } } 【FrontControllerProvider.php】 // レビュー $c->match('/block/reviewlist/{id}', '\Eccube\Controller\Block\ReviewListController::index')->bind('block_reviewlist')->assert('id', '\d+'); お手数をおかけしますがよろしくお願いします。 |
umebius |
投稿日時: 2019/5/22 15:29
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 動的ブロックへの商品コード受け渡しについて 商品コードをURLで使用したいということであれば、
$c->match('/block/reviewlist/{code}', '\Eccube\Controller\Block\ReviewListController::index')->bind('block_reviewlist')->assert('code', '[a-z]+'); といった設定にすれば、URLにコードを使用し、$idではなく$codeという変数で受け取れるかと思います。 [a-z]+のところはサイトの商品コードの仕様に合わせてください。 後はコントローラで商品コードからProductClassエンティティを取得し、そこからProductエンティティの情報を得ればレビューのクエリが可能です。
|
popuko |
投稿日時: 2019/5/22 17:00
対応状況: −−−
|
新米 登録日: 2019/4/1 居住地: 投稿: 7 |
Re: 動的ブロックへの商品コード受け渡しについて umebiusさま
ありがとうございます。 大変申し訳ございません。商品コードではなく商品IDでした・・・すいません。 商品IDを受け渡しの際は、{id}でよろしいのでしょうか? もう一つお伺いしたいのですが・・・。図々しく申し訳ありません・・・。 商品詳細ページからリンクで商品IDなどを受け渡す際はこのような形でいいのでしょうか? 現在の下記の設定 $c->match('/user_data/reviewlist/{id}', '\Eccube\Controller\Block\ReviewListController::index')->bind('block_reviewlist')->assert('id', '\d+'); <a href="{{ url('block_reviewlist', {'id': Product.id}) }}"> リンク先にてこちらのエラーが発生しております。 Sorry, the page you are looking for could not be found. NotFoundHttpException in UserDataController.php line 50: |
umebius |
投稿日時: 2019/5/22 17:12
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 動的ブロックへの商品コード受け渡しについて すみません、ブロックの話でしたね。少し勘違いしていました。
だとするとブロックにパラメーター(商品ID)を渡すのはちょっとEC-CUBEの標準的なブロックの仕組みから外れるので面倒なことになります。 ブロックにIDを渡す理由を少し教えていただいてもよろしいでしょうか? 他の方法があるかもしれません。 |
popuko |
投稿日時: 2019/5/22 17:23
対応状況: −−−
|
新米 登録日: 2019/4/1 居住地: 投稿: 7 |
Re: 動的ブロックへの商品コード受け渡しについて umebius さま
僕の知識不足の思い込みからブロックで作成を進めてしまっておりました。 ブロックではなくページへControllerなどを作成して、データの受け渡しという形になるのでしょうか? |
umebius |
投稿日時: 2019/5/22 17:26
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 動的ブロックへの商品コード受け渡しについて ブロックで商品IDを使うにはどこからかIDを取得しないといけないのは確かです。
検討されているブロックは商品詳細ページだけに設置するというようなイメージでしょうか? |
popuko |
投稿日時: 2019/5/22 17:34
対応状況: −−−
|
新米 登録日: 2019/4/1 居住地: 投稿: 7 |
Re: 動的ブロックへの商品コード受け渡しについて umebiusさま
商品詳細ページからのリンクで、その商品のレビューのみを表示する新規ページの作成に取り掛かっておりました。 説明不足で申し訳ありません。 |
umebius |
投稿日時: 2019/5/22 17:39
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 動的ブロックへの商品コード受け渡しについて なるほど、商品詳細ページとは別のページということなんですね。
だとするとブロックを作るというよりは新しい種類のページを作るという形になると思います。(ブロックはページ内に配置するものなので) |
umebius |
投稿日時: 2019/5/22 17:42
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 動的ブロックへの商品コード受け渡しについて dtb_page_layoutに新しいページのデータは登録してありますでしょうか?
登録してコントローラーを作って、、blockを入れるとややこしいので、ルーティングは下記のような形で良いかと思います。 $c->match('/reviewlist/{id}', '\Eccube\Controller\ReviewListController::index')->bind('reviewlist')->assert('id', '\d+'); <a href="{{ url('reviewlist', {'id': Product.id}) }}"> |
popuko |
投稿日時: 2019/5/22 21:38
対応状況: 解決済
|
新米 登録日: 2019/4/1 居住地: 投稿: 7 |
Re: 動的ブロックへの商品コード受け渡しについて umebius 様
返答遅くなり申し訳ございません。 ルーティングの設定等完了することができました。 細かい点まで教えていただきありがとうございました。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |