2016-09-15 75 views
0

我的列表和顯示字段包含相同的內容,但由於base_list_fieldbase_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和硬編碼的IF條件。 Idk,但路由名稱'admin_index_offer_show'對我來說看起來粗略依賴於IF條件。 –