如何正确使用 twig 的 if not 语句

Ada*_*dam 6 twig

我一直在试图弄清楚如何if not在 Twig 模板引擎中使用该子句。

根据文件

您还可以使用not来检查计算结果为false的值:

所以我尝试像这样使用它:

{% if not signed_in %}
 You are not signed in.
{% endif %}
Run Code Online (Sandbox Code Playgroud)

并且signed_in来自中间件。看起来像这样:

    if (!$this->container->auth->check()) {
        /* Render a Sign-up */
        return $this->container->view->render($response, 'subscriber/index.twig', ['signed_in' => false]);
    }
Run Code Online (Sandbox Code Playgroud)

因此,如果我{{ dump(signed_in) }}未登录,它就会返回false. 但是当我登录时,singed_in返回null.

未登录左侧。 已在右侧登录

我当前正在使用的解决方案是{% if signed_in is defined %},但这实际上不是我正在寻找的,或者是吗?

got*_*oto 7

我建议您使用: {% if signed_in == true %}{% if signed_in == false%}

这是树枝的行为:

{% set testTrue = true %}
{% set testFalse = false %}
{% set testNull = null %}
{% set testString = "something" %}


{% if testTrue %} {# true #}
{% if testFalse %}{# false#}
{% if testNull %} {# false#}
{% if testString %} {# true #}

{% if not testTrue %}{# false#}
{% if not testFalse %}{# true#}
{% if not testNull %} {# false   !!!!!!!!!!!!!!!! #}
{% if not testString %} {# false#}

{% if testTrue == true %} {# true #}
{% if testFalse == true  %} {# false#}
{% if testNull == true  %} {# false#}
{% if testString == true  %} {# true #}

{% if not testTrue == true %} {# false#}
{% if not testFalse == true  %} {# true #}
{% if not testNull == true  %} {# true #}
{% if not testString == true  %} {# false#}
Run Code Online (Sandbox Code Playgroud)

其他值得了解的测试

{% if testTrue == 1 %} {# true #}
{% if testFalse == 1  %} {# false#}
{% if testTrue == "1" %} {# true #}
{% if testFalse == "1"  %} {# false#}
Run Code Online (Sandbox Code Playgroud)


Pra*_*mar 7

Twig != 是一个比较运算符。

The following comparison operators are supported in any expression: ==, !=, <, >, >=, and <=
Run Code Online (Sandbox Code Playgroud)

你可以使用 != 来比较 php 允许你比较的任何两个东西,你得到的结果是一个布尔值。

Twig not 是一个逻辑运算符。(和和或也是如此)

not: Negates a statement.
Run Code Online (Sandbox Code Playgroud)