Dev*_*key 5 templating symfony twig
所以这是用例:
树枝 2.2
交响乐 3.2
在基本模板中,我仅渲染已定义的块(不是“非空”)
{% if block('left_sidebar') is defined %}
<div class="col-md-2">
{{- block('left_sidebar') -}}
</div>
<div class="col-md-10">
{% else %}
<div class="col-md-12">
{% endif %}
Run Code Online (Sandbox Code Playgroud)
为了使上述工作正常,块根本无法定义(这完全是设计的)。无论如何,以下内容都会渲染该块,但我无法弄清楚为什么。
{% if not is_granted('IS_FULLY_AUTHENTICATED') %}
{% block left_sidebar %}
{% include ':blocks:block__login.html.twig' %}
{% endblock %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我想知道这是否不起作用,因为与基本模板代码起作用的原因相同。也就是说,块在运行时之前编译,条件语句在运行时执行。
任何人都可以确认我是对的吗?或者如果我错了请纠正我?
编辑
我尝试将条件的结果强制为 true 和 false,并且在任何一种情况下都会呈现该块。
因此,总结一下,因为这似乎是在一些地方发生的问题,所以我的怀疑是正确的,因为它是编译/运行时问题。
块是经过编译的,并且因为 if 语句是在运行时执行的,所以一个块无法控制另一个块。
如果有人想要更多信息,请参阅 github 问题线程。