Mindaugas Li
Mindaugas Li

Reputation: 1092

Is identical (===) in Twig

Here's the PHP code:

if ($var===0) {do something}

It "does something" only when $var is actually 0 (and if $var is not set, it doesn't work, so everything is OK).

However, Twig doesn't support === operator, and if I write:

{% if var==0 %}do something{% endif %}

it "does something" all the time (even when $var is not set). In order to fix it, I wrote such a code:

{% if var matches 0 %}do something{% endif %}

Is it a proper way to do === comparison in Twig, or I did something wrong here? If it's wrong, how should it be fixed?

Upvotes: 10

Views: 15297

Answers (2)

Alvin Bunk
Alvin Bunk

Reputation: 7764

You need to use same as in Twig for === comparisons:

{% set var1=0 %}
{% set var2='0' %}

{% if var1 is same as( 0 ) %}
    var1 is 0.
{% else %}
    var1 is not zero.
{% endif %}

{% if var2 is same as( 0 ) %}
    var2 is 0.
{% else %}
    var2 is not 0.
{% endif %}

{% if var2 is same as( '0' ) %}
    var2 is '0'.
{% else %}
    var2 is not '0'.
{% endif %}

Here is a twigfiddle showing it in operation:

https://twigfiddle.com/k09myb

Here is the documentation for same as also stating that it is equivalent to ===. Hope that helps you!

Upvotes: 11

martin
martin

Reputation: 96969

Twig doesn't have === but it has same as instead. See: https://twig.sensiolabs.org/doc/2.x/tests/sameas.html

So you could write:

{% if var is same as(0) %}do something{% endif %}

Eventually, you can use is defined to check whether the variable is set.

Upvotes: 4

Related Questions