302

Twigテンプレートで値がNULLかどうかを確認するには、どの構成を使用する必要がありますか?

4

8 に答える 8

554

正確に必要なものに応じて:

  • is nullnull値が:であるかどうかをチェックします

     {% if var is null %}
         {# do something #}
     {% endif %}
    
  • is defined変数が定義されているかどうかを確認します。

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

さらに、2つの値の型を厳密に比較するテストは、 (のような)is sameas以外の値をチェックする場合に役立つ可能性があります。nullfalse

{% if var is sameas(false) %}
    {# do something %}
{% endif %}
于 2010-12-23T16:12:29.853 に答える
135

twigでデフォルト値を設定する方法:http://twig.sensiolabs.org/doc/filters/default.html

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

または、nullのときに表示したくない場合:

{{ my_var | default("") }}
于 2011-10-25T21:30:10.843 に答える
38

仮定がなければ、答えは次のとおりです。

{% 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 %}
于 2012-12-21T09:31:25.917 に答える
9

私はあなたができるとは思わない。これは、Twigテンプレートで変数が未定義(設定されていない)の場合、NULLまたはnone(Twig用語で)のように見えるためです。これは、テンプレートでの不正アクセスエラーの発生を抑制するためであると確信しています。

Twig()には「アイデンティティ」がないため、===これが最善の方法です。

{% if var == null %}
    stuff in here
{% endif %}

これは次のように解釈されます。

if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
  echo "stuff in here";
}

これは、型ジャグリングが得意な場合、、、、、、および未定義の変数などもそのステートメントを真にすることを意味0します。''FALSENULL

私の提案は、Twigに実装されるIDを要求することです。

于 2010-07-16T13:56:16.610 に答える
6

1行でそれを行うこともできます。

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
于 2015-12-07T15:35:05.943 に答える
5
     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

     //test if variable is not null
     {% if var is not null %}
         //todo
     {% endif %}
于 2013-08-28T07:46:47.500 に答える
3

次のコードを使用して、

{% if var is defined %}

var is variable is SET

{% endif %}
于 2012-06-13T21:45:36.450 に答える
0

また、変数が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

于 2020-01-15T11:13:49.183 に答える