我的列表和显示字段包含相同的内容,但由于base_list_field
和base_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 %}
正如您所看到的,大部分代码都是重复的。有没有办法检查我目前在树枝上的页面,然后扩展某个基本模板?在这种情况下,我可以使用一个文件而不是两个用于相同的内容。
答案 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') %}