Answers:
根据您的确切需求:
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 %}
isset()
函数不同,如果定义了变量且其值为null ,is defined
则将返回true
。
is_ sameas
一定{% if var is same as(false) %}
不能{% if var is sameas(false) %}
看到Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
如何在树枝中设置默认值:http : //twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
或者,如果您不希望它在null时显示:
{{ my_var | default("") }}
undefined or empty
和和之间有区别null
吗?
没有任何假设,答案是:
{% 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
,未定义的变种也会作出这样的说法正确。
我的建议是要求将身份应用到Twig中。
{if var is none}
?PHP等价的是什么?
{% if abcxyz is none %}
变为if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
。因此,基本上,如果该值是undefined或null,则它将为true。
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.html,它会转换为if (empty($var))
以假值(!isset, null, 0, array(), "", false, "0", 0.0
)评估的PHP ()php.net/manual/en/function.empty.php您可以也{% if var is same as(var) %}
用于标识(===
)。twig.sensiolabs.org/doc/tests/sameas.html
//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 not null
。
{% if var is not null %}