SonataAdminBundle 模板 - 列出和显示字段模板内容重复
SonataAdminBundle templates - list and show fields template content duplication
我的列表和显示字段包含相同的内容,但由于 base_list_field
和 base_show_field
模板的扩展,我必须创建两个单独的模板。
list/location.html.twig:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}
show/location.html.twig:
{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
{% block field %}
{{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}
如您所见,大部分代码是重复的。有没有办法检查我当前在树枝中的页面,然后扩展某些基本模板?在这种情况下,对于相同的内容,我可以使用一个文件而不是两个文件。
在 twig
中可以 extend/include 动态模板 :
{# 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 %}
(edit) 如果你不想硬编码如果我想通过控制器传递模板变量并将 twig template
更改为类似
{% extends template|default('SonataAdminBundle:CRUD:base_show_field.html.twig') %}
我的列表和显示字段包含相同的内容,但由于 base_list_field
和 base_show_field
模板的扩展,我必须创建两个单独的模板。
list/location.html.twig:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}
show/location.html.twig:
{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
{% block field %}
{{ object.getCity }}, {{ object.getCountry.getName }}
{% endblock %}
如您所见,大部分代码是重复的。有没有办法检查我当前在树枝中的页面,然后扩展某些基本模板?在这种情况下,对于相同的内容,我可以使用一个文件而不是两个文件。
在 twig
中可以 extend/include 动态模板 :
{# 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 %}
(edit) 如果你不想硬编码如果我想通过控制器传递模板变量并将 twig template
更改为类似
{% extends template|default('SonataAdminBundle:CRUD:base_show_field.html.twig') %}