我应该使用什么构造来检查Twig模板中的值是否为NULL?
根据您的具体需求:
null
{% if var is null %} {# do something #} {% endif %}
{% if var is not defined %} {# do something #} {% endif %}
此外,is sameas测试(对两个值进行类型严格比较)可能对检查 null 之外的值(如 false )感兴趣:
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 ,则会导致错误 . 更安全的方式是:
var
NULL
{% if var is not defined or var is null %}
可以缩短为:
{% if var|default is null %}
如果您没有为 default 过滤器提供参数,则它假定为 NULL (默认为默认值) . 所以最简单,最安全的方法(我知道)检查一个变量是否为空(null,false,空字符串/数组等):
default
{% if var|default is empty %}
我认为你不能 . 这是因为如果在树枝模板中未定义(未设置)变量,它看起来像 NULL 或 none (用树枝表示) . 我很确定这是为了抑制模板中发生的错误访问错误 .
none
由于Twig( === )缺少"identity",这是你能做的最好的
===
{% 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之类的东西也会使该陈述成立 .
0
''
FALSE
我的建议是要求在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 %}
你也可以使用一行来做到这一点:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
7 回答
根据您的具体需求:
null
:此外,is sameas测试(对两个值进行类型严格比较)可能对检查
null
之外的值(如false
)感兴趣:如何在树枝中设置默认值:http://twig.sensiolabs.org/doc/filters/default.html
或者,如果您不希望它在null时显示:
没有任何假设,答案是:
但是,只有当
var
正好是NULL
,并且没有任何其他值为false
(例如零,空字符串和空数组)时,才会出现这种情况 . 此外,如果未定义var
,则会导致错误 . 更安全的方式是:可以缩短为:
如果您没有为
default
过滤器提供参数,则它假定为NULL
(默认为默认值) . 所以最简单,最安全的方法(我知道)检查一个变量是否为空(null,false,空字符串/数组等):我认为你不能 . 这是因为如果在树枝模板中未定义(未设置)变量,它看起来像
NULL
或none
(用树枝表示) . 我很确定这是为了抑制模板中发生的错误访问错误 .由于Twig(
===
)缺少"identity",这是你能做的最好的这意味着:
如果你擅长type juggling,那意味着诸如
0
,''
,FALSE
,NULL
和未定义的var之类的东西也会使该陈述成立 .我的建议是要求在Twig中实现身份 .
您可以使用以下代码来检查是否
你也可以使用一行来做到这一点: