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()}}这是最好的答案,因为它返回到默认值