web-dev-qa-db-ja.com

Twigでnullをチェックするにはどうすればいいですか?

Twigテンプレートで値がNULLかどうかを確認するためにどのような構文を使用すればよいですか?

262
Fluffy

まさにあなたが必要としているものに依存します:

  • is null 値がnullであるかどうかを調べます。

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

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

さらに is sameas テストは、2つの値を厳密に比較するタイプで、null以外の値をチェックするのに役立ちます(falseのように)。

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

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

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

Nullのときに表示したくない場合は、

{{ my_var | default("") }}
120
lax4mike

何の仮定もなく、答えは:

{% 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 %}
33
Jamol

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

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

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

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

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

これは、もしあなたが タイプジャグリング を得意とするなら、0''FALSENULL、そして未定義のvarのようなものもそのステートメントを真にすることを意味します。

私の提案は、アイデンティティをTwigに実装するように依頼することです。

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

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

以下のコードを使って、

{% if var is defined %}

var is variable is SET

{% endif %}
3
M.M.H.Masud

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

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