Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何有条件地替代细枝布局块?_Php_Templates_Symfony_Twig - Fatal编程技术网

Php 如何有条件地替代细枝布局块?

Php 如何有条件地替代细枝布局块?,php,templates,symfony,twig,Php,Templates,Symfony,Twig,首先,让我从我尝试使用的代码开始: {% if modal == true %} {% block header %}{% endblock %} {% block footer %}{% endblock %} {% endif %} 我试图做到的是,仅当名为modal的变量为true时,才不显示页眉和页脚块。我在if声明中也有以下内容: {% block content %} {{ dump(modal) }} {% endblock %} 这里发生的事情是,无论

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

{% 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

块不能被包装在条件语句中,或者我需要做一些额外的事情来实现这一点吗


感谢您提供的帮助。

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

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

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

定义

{% block footer %}Some standard content{% endblock %}
在父细枝模板中。 然后,在要决定是否可以显示页脚内容的模板中:

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

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

谢谢。我刚和一个同事谈过,他也提出了同样的建议。他说,如果modal不正确,请尝试渲染父块。是否有其他提示或文档可以解决此问题?(即不能在块外进行样式设置)。我正在尝试将一个来自父主题的div类添加到现有div中。我试图在我的子主题中这样做(以避免损害父主题模板文件)。我遇到的问题是,所讨论的div位于(环绕)一个街区之外。因此,我不确定如何向它添加类,因为如果我在子主题小枝中写入某些内容(由于它扩展了父主题的page.html.twig,因此块外的任何内容都是否定的),我将触发错误。虽然接受的答案是正确的,但这个答案采用了这种方法,并展示了如何实际实现该解决方案+1对于{{parent()}}这是最好的答案,因为它返回到默认值