在 Twig 中渲染控制器 - 意外的 "render" 标签 - 期望定义 "block" 标签的结束标签

Render a controller in Twig - Unexpected "render" tag - expecting closing tag for the "block" tag defined

在 Symfony2 中,至少在 Symfony 2.4 之前,可以在 twig 中渲染这样的控制器

{% render(controller("MyBundle:Default:method", { 'call' : 'action' })) %}

对于 Symfony 3,这会抛出异常

Unexpected "render" tag (expecting closing tag for the "block" tag defined

我花了一些时间寻找解决方案,但它很简单,所以我与你分享。也许它可以节省一些人的时间

{{ render(controller("MyBundle:Default:method", { 'call' : 'action' })) }}

很简单,不是吗?

这个案例在使用sonata bundle时也出现了

错误的树枝

     {% render url('sonata_admin_short_object_information', {
                    'code':     sonata_admin.field_description.associationadmin.code,
                    'objectId': sonata_admin.field_description.associationadmin.id(sonata_admin.value),
                    'uniqid':   sonata_admin.field_description.associationadmin.uniqid
                    }
                )%}

我试过的解决方案:

 {{ render(url('route_name', {'param': value})) }}

工作示例

           {{render(url
                        ('sonata_admin_short_object_information', 
                    {
                    'code':     sonata_admin.field_description.associationadmin.code,
                    'objectId': sonata_admin.field_description.associationadmin.id(sonata_admin.value),
                    'uniqid':   sonata_admin.field_description.associationadmin.uniqid
                    }
                ))
            }}