我一直试图弄清楚如何在Twig模板引擎中使用if not
子句。
根据documents:
您还可以使用 not 来检查评估为 false 的值:
所以我试图像这样使用它:
{% if not signed_in %}
You are not signed in.
{% endif %}
signed_in
来自中间件。看起来像这样:
if (!$this->container->auth->check()) {
/* Render a Sign-up */
return $this->container->view->render($response, 'subscriber/index.twig', ['signed_in' => false]);
}
因此,如果我{{ dump(signed_in) }}
未登录,则返回false
。但是,当我登录后,singed_in
会返回null
。
我目前采用的解决方案是{% if signed_in is defined %}
,但这实际上不是我想要的,或者是它?
答案 0 :(得分:1)
Twig!=是比较运算符。
The following comparison operators are supported in any expression: ==, !=, <, >, >=, and <=
您可以使用!=比较php让您进行比较的任何两件事,而您得到的是布尔值。
Twig不是逻辑运算符。 (and和or也是如此)
not: Negates a statement.
答案 1 :(得分:0)
我建议你使用:
{% 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 testNull == true %} {# true #}
{% if not testTrue == true %} {# false#}
{% if not testFalse == true %} {# true #}
{% if not testNull == true %} {# true #}
{% if not testNull == true %} {# false#}
其他测试要知道
{% if testTrue == 1 %} {# true #}
{% if testFalse == 1 %} {# false#}
{% if testTrue == "1" %} {# true #}
{% if testFalse == "1" %} {# false#}