我是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 %}
其中每个块与来自不同模型/控制器的数据的视图不同。
非常感谢,如果这是一个非常新手的问题,那就很抱歉,我就是这样。
答案 0 :(得分:4)
您可以使用片段http://symfony.com/blog/new-in-symfony-2-2-the-new-fragment-sub-framework
执行此操作您可以通过逻辑路径渲染控制器,如:
{{ render(controller('Bundle:controller:action')) }}
您可以根据需要使用尽可能多的控制器操作来执行此操作。
但是,视图注意事项避免使用执行重要任务的控制器片段,因为用户可能需要等待许多数字运算视图才能显示,只需要查看一个。
此外,避免在片段中放置任何形式(其形式处理/验证噩梦)。使每个片段类似于子仪表板,用户可以在其中选择将其转换为专用表单的操作。
编辑:
关于您当前的代码,在Twig中,只能通过扩展块的发起者的模板来填充块,即只有一个模板或模板下游的模板。你不能'包含'模板可以期望它能够访问包含者的块