我应该使用什么构造来检查Twig模板中的值是否为NULL?
答案 0 :(得分:489)
取决于您的具体需求:
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 %}
答案 1 :(得分:120)
如何在树枝中设置默认值:http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
或者,如果您不希望它在null时显示:
{{ my_var | default("") }}
答案 2 :(得分:33)
没有任何假设,答案是:
{% 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 %}
答案 3 :(得分:6)
我认为你不能。这是因为如果在树枝模板中未定义(未设置)变量,则它看起来像NULL
或none
(用树枝表示)。我很确定这是为了抑制模板中出现的错误访问错误。
由于Twig(===
)缺乏“身份”,这是你能做的最好的事情
{% if var == null %}
stuff in here
{% endif %}
转换为:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
如果您对type juggling表示擅长,则表示0
,''
,FALSE
,NULL
和未定义的var等内容也会使该陈述成立。
我的建议是要求在Twig中实现身份。
答案 4 :(得分:5)
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
答案 5 :(得分:3)
您可以使用以下代码检查是否
{% if var is defined %}
var is variable is SET
{% endif %}
答案 6 :(得分:2)
您也可以使用一行来执行此操作:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
答案 7 :(得分:0)
另外,如果您的变量是 ARRAY ,则选项也很少:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
OR
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
仅当您的数组is defined
AND为NULL
时才有效