1``if`` 2====== 3 4The ``if`` statement in Twig is comparable with the if statements of PHP. 5 6In the simplest form you can use it to test if an expression evaluates to 7``true``: 8 9.. code-block:: jinja 10 11 {% if online == false %} 12 <p>Our website is in maintenance mode. Please, come back later.</p> 13 {% endif %} 14 15You can also test if an array is not empty: 16 17.. code-block:: jinja 18 19 {% if users %} 20 <ul> 21 {% for user in users %} 22 <li>{{ user.username|e }}</li> 23 {% endfor %} 24 </ul> 25 {% endif %} 26 27.. note:: 28 29 If you want to test if the variable is defined, use ``if users is 30 defined`` instead. 31 32You can also use ``not`` to check for values that evaluate to ``false``: 33 34.. code-block:: jinja 35 36 {% if not user.subscribed %} 37 <p>You are not subscribed to our mailing list.</p> 38 {% endif %} 39 40For multiple conditions, ``and`` and ``or`` can be used: 41 42.. code-block:: jinja 43 44 {% if temperature > 18 and temperature < 27 %} 45 <p>It's a nice day for a walk in the park.</p> 46 {% endif %} 47 48For multiple branches ``elseif`` and ``else`` can be used like in PHP. You can 49use more complex ``expressions`` there too: 50 51.. code-block:: jinja 52 53 {% if product.stock > 10 %} 54 Available 55 {% elseif product.stock > 0 %} 56 Only {{ product.stock }} left! 57 {% else %} 58 Sold-out! 59 {% endif %} 60 61.. note:: 62 63 The rules to determine if an expression is ``true`` or ``false`` are the 64 same as in PHP; here are the edge cases rules: 65 66 ====================== ==================== 67 Value Boolean evaluation 68 ====================== ==================== 69 empty string false 70 numeric zero false 71 NAN (Not A Number) true 72 INF (Infinity) true 73 whitespace-only string true 74 string "0" or '0' false 75 empty array false 76 null false 77 non-empty array true 78 object true 79 ====================== ==================== 80