Symfony Controller とEC-Cube4 (2)
前のページの続きです。
2. Controller annotateとテンプレートの呼び出し
3 )EC-Cube4でパラメータ付きでテンプレートを呼びだす
別のページを呼ぶ際に商品IDなどを付けて呼びだしたい時は良くあることです。
例えば、有る商品をクリックしたら、その詳細を表示するページに飛ぶなど。
方法は以下のページを参照
以下のコードを app/Customize/Controller に testController.phpで作成
<?php
namespace Customize\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; # <-追加
use Eccube\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
class testController extends AbstractController
{
/**
* @Method("GET")
* @Route("/test/{id}",name="test")
* @template("test.twig")
*/
public function testMethod($id)
{
return ['id' => $id]; // <- idをidで引き渡す
}
}
Method の追加を忘れるとエラーになる
’id'がテンプレート側での変数名になる。
表示するテンプレートファイルは、app/template/default にtest.twig
で、作成
{% extends 'default_frame.twig' %}
{% block main %}
<h3>Hello !</h3>
<p> Idは{{id}}です</p> {# controllerから引き渡す変数名 #}
{% endblock %}
ページの登録
EC-cube 管理画面−>コンテンツ管理−>ページ管理−>新規作成 と進み
ページ名 −> テスト(何でも良い)
URL 必須 http://ドメイン名/user_data/ に test と入力
ファイル名 必須 app/template/user_data/ .twig の空欄に
test と入力
後は、登録 ボタンをクリックして、登録する。
ページ管理に戻る。もどると以下の様になっているはず
これで http://ドメイン名/test/3 として、呼ぶと
Hello!
IDは3です
と表示されます
登録が出来ていないとエラーとなるので、注意。
また、http://ドメイン名/test で、指定すると Page Not Found になるので、注意
参考文献
よろしければサポートをお願いします。 今後の活動の励みになります。