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 %}

管理画面−>コンテンツ管理−>ページ管理 を確認すると以下の様になっている。

Controllerを書き換えたので、変化する

http://ドメイン名/test?id=3&categoryId=2アクセスすると、
Hello !
Idは3です。
categoryIdは2です。
と表示される

参考文献


よろしければサポートをお願いします。 今後の活動の励みになります。