如何在控制器中更改视图参数?

时间:2011-07-18 14:14:39

标签: php symfony

这是执行的代码(显示在“此页面后面的代码”部分中):

控制器代码

    /**
     * @Route("/hello/{name}", name="_demo_hello")
     * @Template()
     */
    public function helloAction($name)
    {
        $name = "whatever";
        $this->render('AcmeDemoBundle:Demo:hello.html.twig',
          array('name' => '123'));
        //return array('name' => 'abc');
    }

模板代码

{% extends "AcmeDemoBundle::layout.html.twig" %}

{% block title "Hello " ~ name %}

{% block content %}
    <h1>xHello {{ name }}!</h1>
{% endblock %}

输出

xHello Raffael!

网址:http://192.168.177.128/Symfony/web/app_dev.php/demo/hello/Raffael


这是我的问题:

当我取消注释控制器内的返回时,“Raffael”会按预期替换为“abc”。

但根据Quicktour,可以通过render-Method确定模板中变量的值。

  

要在Symfony中渲染模板,请使用a中的render方法   控制器并传递模板中所需的任何变量:

     

$ this-&gt; render('AcmeDemoBundle:Demo:hello.html.twig',array('name'=&gt;   $ name,));

怎么了?

1 个答案:

答案 0 :(得分:1)

快速浏览下面隐式显示你必须返回render的输出:

public function helloAction($name)
{
  return $this->render('AcmeDemoBundle:Demo:hello.html.twig', 
    array('name' => '123'));
}