Unexpected token "name" of value "with" ("end of statement block" expected) in

来源:互联网 发布:时间机器字幕制作软件 编辑:程序博客网 时间:2024/05/16 19:41

在symfony2.3之后,不能使用 
{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}
应该使用 {{render(controller('AcmeDemoBundle:Demo:fancy',{ 'name': name, 'color': 'green'}))}}

包含控制器的输出¶

那么如何在模板里嵌入另外的控制器(controller)的输出?在开发Ajax应用,或者被包含的模板引用了主模板里并不存在的变量时,这个特性就会变得十分有用。

假设你已经创建了一个fancy动作方法(action),打算将其输出包含在index模板里,可以通过使用render标签来实现:

{# src/Acme/DemoBundle/Resources/views/Demo/index.html.twig #}{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}

AcmeDemoBundle:Demo:fancy字符串指代的是Demo控制器的fancy动作方法。namecolor此时就代替了请求参数,用来执行对fancyAction的调用。

// src/Acme/DemoBundle/Controller/DemoController.phpclass DemoController extends Controller{    public function fancyAction($name, $color)    {        // create some object, based on the $color variable        $object = ...;        return $this->render('AcmeDemoBundle:Demo:fancy.html.twig', array(            'name' => $name,            'object' => $object        ));    }    // ...}
在symfony2.3之后,不能使用 
{% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}
应该使用 {{render(controller('AcmeDemoBundle:Demo:fancy',{ 'name': name, 'color': 'green'}))}}

原创粉丝点击