Відповіді:
Залежно від того, що саме вам потрібно:
is nullперевіряє, чи є значення null:
{% if var is null %}
{# do something #}
{% endif %}
is defined перевіряє, чи визначена змінна:
{% if var is not defined %}
{# do something #}
{% endif %}
Крім того, is sameasтест, який здійснює чітке порівняння двох значень, може бути цікавим для перевірки значень, відмінних від null(наприклад false):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()функції PHP , is definedвін повернеться, trueякщо змінна буде визначена і її значення буде null.
is_ sameasповинно бути {% if var is same as(false) %}НЕ {% if var is sameas(false) %}побачити Doc URL => twig.symfony.com/doc/2.x/tests/sameas.html
Як встановити значення за замовчуванням у twig: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Або якщо ви не хочете, щоб він відображався після нуля:
{{ my_var | default("") }}
undefined or emptyі null?
Без жодних припущень відповідь така:
{% if var is null %}
Але це буде справедливо лише в тому випадку, якщо varце точно NULL, а не будь-яке інше значення, яке оцінюється false(наприклад, нуль, порожній рядок та порожній масив). Крім того, це призведе до помилки, якщо varвона не визначена. Більш безпечним способом було б:
{% if var is not defined or var is null %}
який можна скоротити до:
{% if var|default is null %}
Якщо ви не надаєте аргумент для defaultфільтра, він передбачає NULL(тип за замовчуванням). Тож найкоротший і найбезпечніший спосіб (я знаю) перевірити чи порожня змінна (null, false, порожній рядок / масив тощо):
{% if var|default is empty %}
Я не думаю, що ти можеш. Це тому, що якщо змінна не визначена (не встановлена) у шаблоні гілочок, вона має вигляд NULLабо none(у дуговому значенні). Я майже впевнений, що це запобігає появі помилок, що виникають у шаблоні.
Через відсутність "ідентичності" у Twig ( ===) це найкраще, що можна зробити
{% if var == null %}
stuff in here
{% endif %}
Що означає:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Що , якщо ви добре в вашому типу жонглювання , означає , що такі речі, як 0, '', FALSE, NULLі невизначені змінні будуть також зробити це твердження вірне.
Моя пропозиція - попросити ввести особу в Twig.
{if var is none}та який еквівалент PHP?
{% if abcxyz is none %}стає if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }. Отже, якщо значення не визначене або недійсне, воно буде істинним.
{% if var is empty %} twig.sensiolabs.org/doc/tests/empty.html, що перекладається на PHP, if (empty($var))що оцінює значення фальси ( !isset, null, 0, array(), "", false, "0", 0.0) php.net/manual/en/function.empty.php Ви можете також використовувати {% if var is same as(var) %}для ідентичності ( ===). twig.sensiolabs.org/doc/tests/sameas.html
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
if var is not null.
Крім того, якщо ваша змінна - ARRAY , також є кілька варіантів:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
АБО
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
Це працюватиме лише у тому випадку, якщо ваш масив is definedAND єNULL
{% if var is not null %}