Twig IF声明不起作用

时间:2015-12-23 09:50:45

标签: twig

我正在尝试在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 %}

输出
真正
功能已禁用

2 个答案:

答案 0 :(得分:1)

一个细节让我们认为emailActivation可以是一个字符串。

{{ emailActivation }}的输出是falsetrue,但我认为布尔值会返回其他内容(〜nothing or 1〜)

将条件测试为字符串的事实应该可以解决问题。

一种方式是(仅用于字符串,而不是大内容)

{{ emailActivation }}
{{ (emailActivation == 'true') ? 'feature disabled' : 'other content' }}

场所的

答案 1 :(得分:0)

尝试same as它相当于PHP中的=== http://twig.sensiolabs.org/doc/tests/sameas.html