我有一个问题:1个视图/页面如何使用2个控制器来显示不同的数据?
例如:
1)页面使用DvdController显示DVD的信息。
2)在同一页面上,我想使用模板/部分视图,它显示演员列表,该列表应该来自第二个ActorsController。
我可以在另一个页面中添加模板视图,但第二个控制器不起作用:
网址上的主页:website/dvd
{% block body %}
<div>
<h1>{{ dvd.title }} </h1>
</div>
<div>
{{ include('DVDBundle:Actors:actors.html.twig') }}
</div>
{% endblock %}
上面我使用局部视图actors.html.twig
来显示演员,奇怪的是html代码/ div等等实际上是在页面上显示和工作,但是控制器(ActorsController)方法意味着返回这个部分由于某种原因,视图不会被执行。
但是,如果我直接通过链接:website/actors
进入视图,那么它的工作。
答案 0 :(得分:2)
embedded controllers上的Symfony文档很好地解释了这一点。
简而言之,您需要在模板文件中执行以下操作:
<div>
{{ render(controller(
'DVDBundle:Actors:actors',
{ ... parameters to the controller action here ... }
)) }}
</div>
重要的是调用render
函数,它允许渲染控制器,而不是简单地include
模板。 (这假设您有一个带有actorsAction方法的ActorsController;根据您的控制器更改名称。)