我正在尝试在 Twig 中使用一个简单的 if 语句。但是它似乎无法正常工作。从所有情况下输出的第一行可以看出,变量 emailActivation 肯定被正确加载到 Twig 中。
但是 if 语句的行为非常奇怪 - 例如,当变量为 false 并针对 1(case 2)进行测试时,它会按预期工作,但当它为 false 并针对 'false 进行测试时,则不会'(案例 1)。
相反,当变量为 true 时,if 语句在针对“true”测试变量时有效(case 3),但在针对 1 测试时无效(case 4) .
我只展示针对 1 的测试作为我尝试的解决方法,我真的认为问题在于(案例 1)。 (案例 5)和(案例 4)表明这些数字被评估为 bool 值。
我还认为缓存可能是个问题,但据我所知,我已将 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 %}
输出
假的
其他内容
案例 3 emailActivation = true
Twig 代码
{{ emailActivation }}
{% if emailActivation == true %}
feature disabled
{% else %}
other content
{% endif %}
输出
是的
功能已禁用
案例 4 emailActivation = true
Twig 代码
{{ emailActivation }}
{% if emailActivation == 1 %}
feature disabled
{% else %}
other content
{% endif %}
输出
是的
其他内容
案例 5 emailActivation = true
Twig 代码
{{ emailActivation }}
{% if emailActivation == 0 %}
feature disabled
{% else %}
other content
{% endif %}
输出
是的
功能已禁用
最佳答案
一个细节让人认为 emailActivation 可以是一个字符串。
{{ emailActivation }}
的输出是 false
或 true
,但我认为 bool 值返回其他东西 ( ~ 什么都没有或 1
~)。
将条件作为字符串进行测试应该可以解决问题。
一种方式是(对于简单的字符串,而不是大内容):
{{ emailActivation }}
{{ (emailActivation == 'true') ? 'feature disabled' : 'other content' }}
友好
关于Twig IF 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432814/