我应该使用什么构造来检查 Twig 模板中的值是否为 NULL?
8 回答
取决于你到底需要什么:
is null
检查值是否为null
:{% if var is null %} {# do something #} {% endif %}
is defined
检查变量是否已定义:{% if var is not defined %} {# do something #} {% endif %}
此外is sameas
,对两个值进行类型严格比较的测试可能对检查除null
(like 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
is exactly时才成立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 %}
我不认为你可以。这是因为如果一个变量在 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
, ''
, FALSE
,NULL
和 undefined var 之类的东西也会使该陈述成立。
我的建议是要求将身份实施到 Twig 中。
您也可以使用一行来做到这一点:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
//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 %}
此外,如果您的变量是一个ARRAY,也有几个选项:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
或者
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
这仅适用于您的数组is defined
AND 是NULL