4) テンプレートの作成
前回の「3) コントローラの作成」でひとまず Helloバンドル は完成しました。
今回は表示するものが少ないですが、今後表示するものが多く複雑になったばあいは、
コントローラで直接表示用のコードを書いていくとメンテナンスがしにくく、効率も
さがります。
そこで、今回はテンプレートを作成し、表示部分はこのテンプレートに任せるよう、
コントローラを修正します。
まずは、コントローラのほうを修正します。
1 2 3 4 5 6 7 8 9 10 11 12 |
// src/Acme/HelloBundle/Controller/HelloController.php namespace Acme\HelloBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class HelloController extends Controller { public function indexAction($name) { return $this->render('AcmeHelloBundle:Hello:index.html.twig', array('name' => $name)); } } |
前回と比べると、”return”の行が変わってます。
前回
1 |
return new Response(); |
今回
1 |
return $this->render(, ); |
$this->render() は、指定したテンプレートをレンダリングし、その結果を元にした
Responseオブジェクトを返します。
なので、この場合も結果的にはResponseオブジェクトをreturnすることになります。
また、このrender()メソッドを使うため “use Symfony\Bundle\FrameworkBundle\Controller\Controller” クラスを継承する必要があります。
そこで、上記のように4行目で、このクラスを使用を宣言し、6行目でこのクラスを継承する
処理 “extends Controller” を入れてあります。
では、テンプレートの話しに入ります。
ここでは、”AcmeHelloBundle:Hello:index.html.twig”という名前のテンプレートを指定しています。
これはつまりどのファイルをさすのか? 以下を指します。
src/Acme/HelloBundle/Resources/views/Hello/index.html.twig
なので、次に “src/Acme/HelloBundle/Resources/views/Hello/index.html.twig” という
テンプレートを作成します。
1 2 3 4 5 6 |
{# src/Acme/HelloBundle/Resources/views/Hello/index.html.twig #} {% extends '::base.html.twig' %} {% block body %} Hello {{ name }}! {% endblock %} |
これで、テンプレートを使ったHelloバンドルの完成です。
以下のように自分のサーバにアクセスしてみてください。
http://xxxxxxxx/app_dev.php/hello/Taro