Reputation: 1092
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
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:
Here is the documentation for same as
also stating that it is equivalent to ===
. Hope that helps you!
Upvotes: 11
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