SonataAdminBundle模板 - 列出并显示字段模板内容重复

时间:2016-09-15 10:13:15

标签: symfony templates twig sonata-admin

我的列表和显示字段包含相同的内容,但由于base_list_fieldbase_show_field模板的扩展,我必须创建两个单独的模板。

列表/ location.html.twig:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
    {{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}

显示/ location.html.twig:

{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}

{% block field %}
    {{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}

正如您所看到的,大部分代码都是重复的。有没有办法检查我目前在树枝上的页面,然后扩展某个基本模板?在这种情况下,我可以使用一个文件而不是两个用于相同的内容。

1 个答案:

答案 0 :(得分:0)

twig中,可以扩展/包含动态模板:

{# do test here on which page you are or pass through controller #}
{% if true %}
    {% set template = 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
{% else %}
   {% set template = 'SonataAdminBundle:CRUD:base_list_field.html.twig' %
{% endif %}
{% extends template %}

{% block field %}
    {{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}

(编辑)如果您不想要硬编码我是否会通过控制器传递模板变量并将twig template更改为类似

{% extends template|default('SonataAdminBundle:CRUD:base_show_field.html.twig') %}