在Symfony 2中的一个视图上使用局部视图和第二个控制器

时间:2016-01-09 16:40:33

标签: php symfony twig

我有一个问题: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进入视图,那么它的工作。

1 个答案:

答案 0 :(得分:2)

embedded controllers上的Symfony文档很好地解释了这一点。

简而言之,您需要在模板文件中执行以下操作:

<div>
    {{ render(controller(
        'DVDBundle:Actors:actors',
        { ... parameters to the controller action here ... }
    )) }}
</div>

重要的是调用render函数,它允许渲染控制器,而不是简单地include模板。 (这假设您有一个带有actorsAction方法的ActorsController;根据您的控制器更改名称。)