2016-09-15 2 views
0

В моем списке и отображаемых полях содержится одинаковое содержимое, но из-за расширения шаблонов base_list_field и base_show_field мне нужно создать два отдельных шаблона.Шаблоны SonataAdminBundle - дублирование и отображение содержимого шаблона контента

список/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

В 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') %} 
+0

Неточный ответ на вопрос, но если никто не ответит более подробно, я wi Пометьте его как правильное. Как вы сказали, состояние _route и hardcoded IF. Idk, но имя маршрута 'admin_index_offer_show' для меня выглядит отрывочно зависящим в условии IF. –

Смежные вопросы