Symfony Controller とEC-Cube4 (3)
前のページの続きです
このページでは、EC-Cube 4で別の方法でパラメータを渡す方法について書く。
2. Controller annotateとテンプレートの呼び出し
3 )EC-Cube4でパラメータ付きでテンプレートを呼びだす その2
前のページでは、 http://ドメイン名/test/{id} の様に、このidを受け取って、returnで twigテンプレートに返す方法を書いた。
この方法だと、一つのパラメータのみを送ることになりますが、多くのパラメータを送るために、http://ドメイン名/test?id=x&categoryID=y
のような形式で送れるとよいので、これについて、書きます。
この形式で受け取った後のパラメータの処理とtwigテンプレートに渡すControllerを作成する。
例ではvalidation等の処理はしていないので、実際の使用では気を付ける必要がある。
controller のannotate部分
/**
*
* @Route("/test", name="test") #URLを指定
* @Template("test.twig")
*/
app/Customize/Controller/testController
<?php
namespace Customize\Controller;
//use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; <-削除
use Symfony\Component\HttpFoundation\Request; // <-追加
use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
class TestController extends AbstractController
{
/**
* # @Method("GET") <- 削除
* @Route("/test", name="test") # /test/{id} の/{id}削除
* @Template("test.twig")
*/
public function index(Request $request)
{
$id= $request->query ->get('id'); // <- 追加 idを取り出す
$categoryId = $request->query ->get('categoryId'); //追加
return [ 'id' => $id,
'categoryId' => $categoryId,]; //引き渡すパラメータ
}
}
確認の為のテンプレート test.twig
{% extends 'default_frame.twig' %}
{% block main %}
<h3>Hello !</h3>
<p> Idは{{id}}です</p> {# controllerから引き渡された変数名 id, categoryId #}
<p> categoryIdは{{categoryId}}です。
{% endblock %}
管理画面−>コンテンツ管理−>ページ管理 を確認すると以下の様になっている。
![](https://assets.st-note.com/img/1675752816665-KM2oiIx2E1.png?width=1200)
http://ドメイン名/test?id=3&categoryId=2アクセスすると、
Hello !
Idは3です。
categoryIdは2です。
と表示される
参考文献
いいなと思ったら応援しよう!
![Kacchan](https://d2l930y2yx77uc.cloudfront.net/assets/default/default_profile_1-9b784003abbac36db44620c7f48629787caea4d53ae4e4f1b710aed18e204e23.png?width=600&crop=1:1,smart)