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

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

7 ответов


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

  • is null проверяет, является ли значение null:

    {% if var is null %}
        {# do something #}
    {% endif %}
    
  • is defined проверяет, определена ли переменная:

    {% if var is not defined %}
        {# do something #}
    {% endif %}
    

дополнительно is sameas test, который делает строгое сравнение типа двух значений, может представлять интерес для проверки значений, отличных от null (как false):

{% if var is sameas(false) %}
    {# do something %}
{% endif %}

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

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

или если вы не хотите, чтобы он отображался при null:

{{ my_var | default("") }}

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

{% if var is null %}

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

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

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

{% if var|default is null %}

если вы не предоставите аргумента , он предполагает NULL (по умолчанию неисполнение.) Поэтому самый короткий и безопасный способ (я знаю) проверить, является ли переменная пустой (null, false, empty string/array и т. д.):

{% if var|default is empty %}

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

мое предложение-попросить, чтобы личность была реализована в Twig.


     //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 defined %}

var is variable is SET

{% endif %}

вы также можете использовать одну линию, для этого:

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