Twig,Symfony2:从同一个动作有条件地扩展模板

时间:2013-08-01 13:05:00

标签: php symfony twig

在一个div部分下的 base.html.twig 文件中,在会话控制器 editAction 上调用渲染功能,转动渲染 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的路由。这意味着不会继承任何模板,它将是具有基本形式的普通样式。我可以使用 “{%extends'DefaultBundle :: base.html.twig'%}” 但是,这意味着有时模板基本上会在页面上显示两次,这不是很漂亮,也不实用。有没有办法扩展base.html.twig取决于是否使用了渲染(控制器{})?

1 个答案:

答案 0 :(得分:1)

您可以将控制器中的变量或全局树枝变量从侦听器传递到您的视图,以指示扩展模板。

然后将三元if条件与extends组合。

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

...其中minimum可以是仅包含content块的模板,但该文件必须存在。