首先,让我从我尝试使用的代码开始:
{% if modal == true %}
{% block header %}{% endblock %}
{% block footer %}{% endblock %}
{% endif %}
我试图实现的是,只有当名为modal的变量为true时,才不显示页眉和页脚块。我在if语句下面也有这个:
{% block content %}
{{ dump(modal) }}
{% endblock %}
这里发生的情况是,无论modal的值是true还是true,我清空页眉和页脚块的覆盖始终运行。所以,我用传递为false的modal来运行这个,结果是页眉和页脚仍然没有显示。dump命令的输出准确地显示true或false,但if语句中的条件似乎总是计算为true。
块可以不封装在条件语句中吗?或者我需要做一些额外的事情来实现这一点吗?
谢谢你能提供的任何帮助。
定义
{% block footer %}Some standard content{% endblock %}
在父分支模板中。然后在你想决定是否显示页脚内容的模板中,你可以做:
{% block footer %}
{% if not modal == true %}
{{ parent() }}
{% endif %}
{% endblock %}
如果模态为true,页脚将为空,如果不是,页脚中将打印"某些标准内容"
正如文档中所说,块不关心它周围的任何逻辑:
块提供了一种方法来改变模板的某个部分的呈现方式,但它不会以任何方式干扰它周围的逻辑
您应该将该逻辑放在块中,而不是放在outerside上,正如您在文章的最后一个示例中看到的那样。