26

首先,让我从我尝试使用的代码开始:

{% if modal == true %}
    {% block header %}{% endblock %}
    {% block footer %}{% endblock %}
{% endif %}

我想要完成的是仅当名为 modal 的变量为真时才显示我的页眉和页脚块。我在 if 语句下面也有这个:

{% block content %}
    {{ dump(modal) }}
{% endblock %}

这里发生的情况是,无论 modal 的值是否为真,我对清空页眉和页脚块的覆盖总是运行。因此,我使用作为 false 传入的 modal 运行它,结果是页眉和页脚仍然不显示。dump 命令的输出准确地显示真或假,但条件似乎总是在 if 语句中评估为真。

可以不将块包装在条件语句中,还是我需要做一些额外的事情才能完成这项工作?

谢谢你的尽心帮助。

4

2 回答 2

57

定义

{% block footer %}Some standard content{% endblock %}

在父树枝模板中。然后在要决定是否显示页脚内容的模板中可以执行以下操作:

{% block footer %}
  {% if not modal == true %}
    {{ parent() }}
  {% endif %}
{% endblock %}

如果模式为真 - 页脚将为空,否则 - 在页脚中将打印“一些标准内容”

于 2013-02-07T00:50:07.537 回答
27

块不关心它周围的任何逻辑,如文档中所述:

块提供了一种方法来更改模板的某个部分的呈现方式,但它不会以任何方式干扰它周围的逻辑。

您应该将该逻辑放在块内部,而不是外部,正如您在该文章的最后一个示例中看到的那样。

于 2013-02-06T21:26:32.190 回答