Twig IF 语句不起作用

标签 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)表明这些数字被评估为 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 }} 的输出是 falsetrue,但我认为 bool 值返回其他东西 ( ~ 什么都没有或 1 ~)

将条件作为字符串进行测试应该可以解决问题。

一种方式是(对于简单的字符串,而不是大内容):

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

友好

关于Twig IF 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432814/

相关文章:

loops - Drupal 8 中的循环字段

php - Symfony 5 - 同一页面上的多个表单

php - 通过 phpunit、symfony 测试 Controller Action

javascript - Twig 到 Js 的数据不完整数组

twig - Twig 中的动态变量,例如?

php - Twig – 以前的格式

php - Symfony2 Twig 包括 Assets 无法正常工作的 header

forms - Symfony Twig : insert fontawesome icon in a form_widget

php - 为什么不解释 Twig 标签?

javascript - 谷歌地图信息窗口中的 Symfony 动态通配符