独自のControllerを作成
/app/Customize/Controller/以下に独自のControllerクラスファイルを作成する
- /app/Customize/Controller/PageController
<?php
namespace Customize\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;
class PageController
{
//
}
このクラスの中に、@Route
アノテーションを付与した関数を追加していくことで
ルーティングが自由に追加できる
@Routeアノテーションさえ付いていればController名や関数名はなんでもOK
例えば「ようこそ!」というレスポンスだけを返してみる場合はこんな感じ
/**
* @Route("/welcome")
*/
public function welcome()
{
return new Response('ようこそ!');
}
これで /welcome
にアクセスすると文字だけが表示されるようになる
twigテンプレートで表示したい場合
@Route
アノテーションに加えて、@Template
アノテーションを追加する
/**
* @Route("/about", name="about")
* @Template("Page/about.twig")
*/
public function about()
{
return [];
}
合わせて、/app/template/テーマ名/{@Templateで指定したパス}
以下に
twigファイルを新規作成する
例えば上記例だと下記のtwigを作成することになる
- app/template/default/Page/about.twig
<h3>About</h3>
...
この場合従来のControllerと同様にDBの取得・操作なども併せて行えるので便利
URLでパラメータを受け取る場合
@Route
アノテーションと引数に追加してあげる
/**
* @Route("/page/{id}")
*/
public function page($id)
{
return new Response('pageId is '.$id);
}
その他オプションやできることはSymfonyドキュメントに記載あり
ECCUBE3,4にて、
管理画面のページ追加機能を使用せずにControllerを介して独自のページを追加する方法のメモ