php 如何有条件地覆盖TWIG布局块?

unguejic  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(94)

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

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

我试图实现的是不显示我的页眉和页脚块,只有当变量称为模态是真的。我在if语句下面也有这个:

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

这里发生的是,无论modal的值是否为true,我用于清空页眉和页脚块的重写总是运行。所以,我运行这个,模态传入为false,结果是页眉和页脚仍然不显示。dump命令的输出准确地显示了true或false,但条件在if语句中的计算结果似乎总是为true。
块可以不被 Package 在条件语句中吗?或者我需要做一些额外的事情来使它工作?

kupeojn6

kupeojn61#

定义

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

在父分支模板中。然后在模板中,你想决定是否显示页脚的内容,你可以这样做:

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

如果模态为真-页脚将为空,如果不是-在页脚将打印“一些标准内容”

x8diyxa7

x8diyxa72#

块不关心它周围的任何逻辑,如文档中所述:
块提供了一种方法来更改模板的某个部分的呈现方式,但它不会以任何方式干扰其周围的逻辑。
您应该将该逻辑放在块内部,而不是放在外部,正如您在那篇文章的最后一个示例中看到的那样。

相关问题