Twigテンプレートで値がNULLかどうかを確認するためにどのような構文を使用すればよいですか?
まさにあなたが必要としているものに依存します:
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 %}
小枝にデフォルト値を設定する方法: 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 %}
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
、そして未定義の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 %}
1行でそれを行うこともできます。
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}