首先,让我开始尝试使用的代码:
{% if modal == true %}
{% block header %}{% endblock %}
{% block footer %}{% endblock %}
{% endif %}
我想要完成的是,如果名为modal的变量为true,则不显示我的页眉和页脚块。我在if声明下面也有这个:
{% block content %}
{{ dump(modal) }}
{% endblock %}
这里发生的事情是,无论modal的值是否为true,我的覆盖以清空页眉和页脚块总是会运行。因此,我运行此模式传入的模式为false,结果是页眉和页脚仍然没有显示。 dump命令的输出准确显示true或false,但if语句中的条件似乎总是评估为true。
块可以不包含在条件语句中,还是需要做一些额外的工作才能使其工作?
感谢您提供的任何帮助。
答案 0 :(得分:48)
定义
{% block footer %}Some standard content{% endblock %}
在父树枝模板中。 然后在模板中,您要决定是否可以显示页脚的显示内容:
{% block footer %}
{% if not modal == true %}
{{ parent() }}
{% endif %}
{% endblock %}
如果模态为真 - 页脚将为空,如果不是 - 页脚将打印“某些标准内容”
答案 1 :(得分:23)
块不关心它周围的任何逻辑,如the documentation中所述:
一个块提供了一种方法来改变模板的某个部分的呈现方式,但它不会以任何方式干扰它周围的逻辑。
您应该将该逻辑放在块中,而不是放在外部,正如您在该文章的最后一个示例中所看到的那样。