【发布时间】:2017-06-30 08:57:24
【问题描述】:
这是用例:
- 在动态页面结构中呈现登录表单块,但前提是用户未通过身份验证
- 如果未通过身份验证,则不得定义块(以保留动态页面结构)
twig 2.2
symfony 3.2
在基本模板中,我仅在定义块时渲染块(不是“非 emtpy”)
base.html.twig
{% 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 %}
index.html.twig
为了上述工作,根本无法定义块(这是完全设计的)。无论如何,下面都会渲染块,我不知道为什么。
{% if not is_granted('IS_FULLY_AUTHENTICATED') %}
{% block left_sidebar %}
{% include ':blocks:block__login.html.twig' %}
{% endblock %}
{% endif %}
我想知道这是否不起作用,因为与基本模板代码确实工作的原因相同。即块在运行前编译,条件语句在运行时执行。
谁能确认我是对的?如果我错了,或者纠正我?
编辑
我已经尝试强制条件的结果为真和假,并且在任何一种情况下都会呈现块。
【问题讨论】:
-
IS_AUTHENTICATED_FULLY -
看起来他们把一个别名放在另一个上面。没有区别,但很好的喊声。我尝试强制测试的结果为真假,并且该块仍然呈现。
-
类似的东西怎么样:` {% if app.user and is_granted("IS_FULLY_AUTHENTICATED") %}` ?
-
不,即使你强制 true 或 false,它仍然会呈现。
-
为什么不将块渲染为空,例如。评估块内的条件?
标签: twig symfony templating