在一个视图Symfony中显示来自不同控制器的许多操作

时间:2013-10-10 09:54:25

标签: php templates symfony twig render

我是Symfony的新手,我想知道是否可以使用Symfony2完成这个想法。

我需要创建一个仪表板,其中显示了许多图表。每个图表都有来自模型的数据,但所有内容都应该显示在一个模板中。

当我尝试从同一视图调用不同的操作时,问题出现了,因为每个操作都需要一个路由,所以我想创建一个控制器操作,调用所有其他操作,并在一个方法中呈现它。

这个想法可以承受吗?还有其他最佳做法吗?

视图应该是这样的:

{% extends '::base.html.twig' %}

{% block body %}
<div id="cabecera">
    <h1>Dashboard</h1>
</div>

<div id="contenido">
    {% block contenido %}{% endblock %}
</div> 
<div id="anonym_users">
    {% block anonym_users %}{% endblock %}
</div>
<div id="registered_users">
    {% block registered_users %}{% endblock %}
</div>
<div id="check_ins">
    {% block check_ins %}{% endblock %}
</div>

<div id="pie">
    <hr/>
    <div align="center">- footer -</div>
</div>
{% endblock %}

其中每个块与来自不同模型/控制器的数据的视图不同。

非常感谢,如果这是一个非常新手的问题,那就很抱歉,我就是这样。

1 个答案:

答案 0 :(得分:4)

您可以使用片段http://symfony.com/blog/new-in-symfony-2-2-the-new-fragment-sub-framework

执行此操作

您可以通过逻辑路径渲染控制器,如:

{{ render(controller('Bundle:controller:action')) }}

您可以根据需要使用尽可能多的控制器操作来执行此操作。

但是,视图注意事项避免使用执行重要任务的控制器片段,因为用户可能需要等待许多数字运算视图才能显示,只需要查看一个。

此外,避免在片段中放置任何形式(其形式处理/验证噩梦)。使每个片段类似于子仪表板,用户可以在其中选择将其转换为专用表单的操作。

编辑:

关于您当前的代码,在Twig中,只能通过扩展块的发起者的模板来填充块,即只有一个模板或模板下游的模板。你不能'包含'模板可以期望它能够访问包含者的块