我正在尝试在Twig中使用简单的if语句。但它似乎没有正常工作。变量emailActivation当然可以正确地加载到Twig中,从所有情况下的输出的第一行可以看出。
然而,if语句的行为非常奇怪 - 例如,当变量为false并且针对1( case 2 )进行测试时,它会按预期工作,但是当它为false并且针对'false进行测试时,它不会'(案例1 )。
相反,当变量为true时,if语句在针对'true'( case 3 )进行测试时起作用,但在针对1( case 4 )进行测试时则不起作用
我只显示针对1的测试作为我尝试的解决方法,实际上我认为问题在于(案例1 )。 (案例5 )和(案例4 )建议将数字评估为布尔值。
我还认为它可能是一个与缓存有关的问题,但据我所知,我已经设置了Twig不使用缓存。即使Twig正在缓存,问题仍然出现在第一页加载和重新启动浏览器时。我已经尝试过在IE和Firefox中再次尝试我认为浏览器与Twig本身存在的问题无关。据我所知。
提前感谢您的任何帮助!
案例1 emailActivation = false
树枝代码
{{ emailActivation }}
{% if emailActivation == true %}
feature disabled
{% else %}
other content
{% endif %}
输出
假
功能已禁用
案例2 emailActivation = false
树枝代码
{{ emailActivation }}
{% if emailActivation == 1 %}
feature disabled
{% else %}
other content
{% endif %}
输出
假
其他内容
案例3 emailActivation = true
树枝代码
{{ emailActivation }}
{% if emailActivation == true %}
feature disabled
{% else %}
other content
{% endif %}
输出
真正
功能已禁用
案例4 emailActivation = true
树枝代码
{{ emailActivation }}
{% if emailActivation == 1 %}
feature disabled
{% else %}
other content
{% endif %}
输出
真正
其他内容
案例5 emailActivation = true
树枝代码
{{ emailActivation }}
{% if emailActivation == 0 %}
feature disabled
{% else %}
other content
{% endif %}
输出
真正
功能已禁用
答案 0 :(得分:1)
一个细节让我们认为emailActivation可以是一个字符串。
{{ emailActivation }}
的输出是false
或true
,但我认为布尔值会返回其他内容(〜nothing or 1
〜)
将条件测试为字符串的事实应该可以解决问题。
一种方式是(仅用于字符串,而不是大内容):
{{ emailActivation }}
{{ (emailActivation == 'true') ? 'feature disabled' : 'other content' }}
场所的
答案 1 :(得分:0)
尝试same as
它相当于PHP中的===
http://twig.sensiolabs.org/doc/tests/sameas.html