有没有办法只有条件地加载一个Twig扩展?

时间:2015-04-19 17:27:09

标签: twig

我想做这个代码块暗示的内容:

{% if load_base %}
  {% extends "base.html" %}
{% endif %}

因此,如果load_base不正确,我根本不需要任何扩展。此模板中只有一个内容块,我希望打印的内容就像从未包含{%extends%}行一样。

我确实在文档中看到了conditional inheritance,但这仍然要求我制作一个看似黑客的空模板文件。有没有更好的办法呢?

1 个答案:

答案 0 :(得分:0)

你不能。创建空模板也不起作用。扩展模板仅修改具有相同名称的块。

有例子: http://twigfiddle.com/hx5a0e

{# main.twig #}
{% extends "base.twig" %}

{% block a %}a{% endblock %}
{% block b %}b{% endblock %}

{# base.twig #}
{% block a %}{% endblock %}

main.twig的输出始终为a。阻止b块的内容,因为它不在基本模板中。所以"什么都不延伸"没有意义,因为根本就没有输出。

您必须编写简单的模板,除了块定义以外,只需按正确的顺序排列。