在symfony2.3之后,不能使用 {% render "AcmeDemoBundle:Demo:fancy" with { 'name': name, 'color': 'green' } %}
应该使用 {{render(controller('AcmeDemoBundle:Demo:fancy',{ 'name': name, 'color': 'green'}))}}
{% 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动作方法。name和color此时就代替了请求参数,用来执行对fancyAction的调用。
// src/Acme/DemoBundle/Controller/DemoController.php
class 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'}))}}