我试图在Twig中使用一个简单的if语句。然而,它似乎没有正常工作。变量emailActivation无疑正在正确地加载到Twig中,在所有情况下都可以从输出的第一行中看到这一点。
然而,if语句的行为非常奇怪--例如,当变量为false并被针对1(案例2)进行测试时,它的工作方式是预期的,而不是当它是false并针对'false‘进行测试时(案例1)。
相反,当变量为true时,if语句在对'true‘进行测试时工作(案例3),而不是针对1(案例4)进行测试。
--我只把针对1的测试作为我尝试的的解决办法,实际上我认为问题就在(案例1)。(例5)和(例4)表示数字被计算为布尔值。
我还认为这可能是一个与缓存有关的问题,但据我所知,我已将Twig设置为不使用缓存。即使Twig正在缓存,问题仍然发生在第一个页面加载和浏览器重新启动时。我曾经尝试过IE和Firefox,不过,据我所知,我认为浏览器与Twig本身的问题并不真正相关。
谢谢您的帮助!
案例1 emailActivation = false
Twig代码
{{ emailActivation }}
{% if emailActivation == true %}
feature disabled
{% else %}
other content
{% endif %}输出
错误
功能禁用
案例2 emailActivation = false
Twig代码
{{ emailActivation }}
{% if emailActivation == 1 %}
feature disabled
{% else %}
other content
{% endif %}输出
错误
其他内容
Case 3 emailActivation = true
Twig代码
{{ emailActivation }}
{% if emailActivation == true %}
feature disabled
{% else %}
other content
{% endif %}输出
真的
功能禁用
Case 4 emailActivation = true
Twig代码
{{ emailActivation }}
{% if emailActivation == 1 %}
feature disabled
{% else %}
other content
{% endif %}输出
真的
其他内容
Case 5 emailActivation = true
Twig代码
{{ emailActivation }}
{% if emailActivation == 0 %}
feature disabled
{% else %}
other content
{% endif %}输出
真的
功能禁用
发布于 2015-12-24 07:12:43
一个细节让人认为emailActivation可能是一个字符串。
{{ emailActivation }}的输出是false或true,但我认为布尔值返回其他东西(~ nothing或1 ~)。
将条件测试为字符串应该可以解决这个问题。
一种方法是(只是一个字符串,而不是一个大的内容)
{{ emailActivation }}
{{ (emailActivation == 'true') ? 'feature disabled' : 'other content' }}友好
发布于 2015-12-23 19:36:39
试试same as,它相当于PHP http://twig.sensiolabs.org/doc/tests/sameas.html中的===
https://stackoverflow.com/questions/34432814
复制相似问题