簡體   English   中英

Twig,Symfony2:從同一操作中有條件地擴展模板

[英]Twig, Symfony2: Extend template conditionally from same action

在我的base.html.twig文件中的一個div部分下,在會話控制器editAction上調用了render函數,后者又渲染了edit.html.twig

<div class="container">
    {{ render(controller("DefaultBundle:Session:edit", {'id':session.id})) }}
</div>

edit.html.twig

{{ form_start(form) }}
    {{ form_errors(form) }}
    <div>
        <p>Fill in the form below to change the data:</p>
        <div class="session_form">
            {{ form_label(form.title) }}
            {{ form_widget(form.title) }}

            <div id="form_options">
                {{ form_rest(form) }}
            </div>
            <button class="btnSave">Save</button>
        </div>
    </div>
 {{ form_end(form) }}

一切正常,但是,在某些情況下,將顯示edit.html.twig文件,以基於editAction的路線以表單形式編輯實體,其中如上所述,可以直接呈現它而無需路線用於editAction。 這意味着不會繼承任何模板,它將是具有基本形式的純樣式。 我可以使用“ {%extended'DefaultBundle :: base.html.twig'%}” ,但這意味着有時模板實際上會在頁面上顯示兩次,這並不美觀,也不實用。 有沒有一種方法可以根據是否使用render(controller {})來擴展base.html.twig?

您可以將控制器中的變量或偵聽器中的全局樹枝變量傳遞給視圖,以指示是否可以擴展模板。

然后將三元if-條件與extends

{% extends standalone ? "minimum.html" : "DefaultBundle::base.html.twig" %}

...其中minimum可以是僅包含content塊的模板,但是文件必須存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM