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 %}
管理画面−>コンテンツ管理−>ページ管理 を確認すると以下の様になっている。
http://ドメイン名/test?id=3&categoryId=2アクセスすると、
Hello !
Idは3です。
categoryIdは2です。
と表示される
参考文献
よろしければサポートをお願いします。 今後の活動の励みになります。