Как проверить значение null в Twig?

Какую конструкцию я должен использовать, чтобы проверить, является ли значение NULL в шаблоне Twig?

Ответ 1

В зависимости от того, что вам нужно:

  • 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 %}

Ответ 2

Как установить значения по умолчанию в twig: http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn't exist") }}

Или если вы не хотите, чтобы он отображался, когда null:

{{ my_var | default("") }}

Ответ 3

Без каких-либо предположений ответ таков:

{% if var is null %}

Но это будет верно, только если var точно NULL, а не любое другое значение, которое оценивается как false (например, нуль, пустая строка и пустой массив). Кроме того, это приведет к ошибке, если var не определен. Более безопасный способ:

{% if var is not defined or var is null %}

который можно сократить до:

{% if var|default is null %}

Если вы не предоставляете аргумент фильтру default, он принимает NULL (по умолчанию используется по умолчанию). Итак, самый короткий и безопасный способ (я знаю), чтобы проверить, пуста ли переменная (нуль, ложь, пустая строка/массив и т.д.):

{% if var|default is empty %}

Ответ 4

Я не думаю, что ты можешь. Это связано с тем, что если переменная undefined (не задана) в шаблоне ветки, она выглядит как 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, а undefined var также сделает это утверждение истинным.

Мое предложение - попросить личность быть внедренной в Twig.

Ответ 5

     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

     //test if variable is not null
     {% if var is not null %}
         //todo
     {% endif %}

Ответ 6

вы можете использовать следующий код для проверки того,

{% if var is defined %}

var is variable is SET

{% endif %}

Ответ 7

Вы также можете использовать одну строку:

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}