2010-07-16 25 views

回答

423

根据你需要的东西:

  • 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

这是现在的小枝 – 2011-09-11 00:32:31

+48

的正确答案并检查是否有不为空,只需执行'{%if var is null'} – 2012-09-06 19:31:00

+4

快速注意到:$ var == null将返回true与$ var是0,但$ var是null将返回false – daSn0wie 2013-02-13 21:32:05

5

我不认为你可以。这是因为如果变量模板中的变量未定义(未设置),它看起来像NULLnone(以树枝形式表示)。我很确定这是为了抑制在模板中发生错误的访问错误。

由于缺乏嫩枝一个“身份”(===),这是最好的,你可以做

{% 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中。

+2

肯德尔是正确的,建议他们实现它 - 我有什么,但好的经验要求的东西要在枝条的GitHub的问题跟踪落实。他们非常友好和专业。 – Shabbyrobe 2010-07-17 05:36:06

+0

@ kendall-hopkins好奇,什么时候适合使用'{if var is none}'以及什么是PHP等价物? – noisebleed 2012-02-07 16:19:07

+0

@noisebleed'{%if abcxyz is none%}''if(isset($ context [“abcxyz”])){$ _abcxyz_ = $ context [“abcxyz”]; } else {$ _abcxyz_ = null; } if((null === $ _abcxyz_)){echo“hi”;}' ' }'。所以基本上,如果该值是未定义的或为空,那将是事实。 – 2012-02-08 04:24:21

108

如何在树枝设置默认值:http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn't exist") }} 

或者,如果你不希望它显示当空:

{{ my_var | default("") }} 
+0

那么它是否区分'undefined或empty'和'null'? – Fluffy 2011-10-27 08:26:44

+6

看起来像这样是检查的正确方法...耻辱它没有很多upvotes。 – 2012-02-29 19:44:47

+1

正是我在找的东西。 必须确保您拥有|默认情况下,您可以尝试默认其他变量,如: {{my_var |默认(my_var2)}} 我刚测试过,但你甚至可以继续链接如下: {{my_var |默认(my_var2)|默认(“my_var和my_var2不存在”)}} – 2013-10-01 10:17:56

3

您可以使用下面的代码来检查是否

{% if var is defined %} 

var is variable is SET 

{% endif %} 
30

没有任何假设的答案是:

{% 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,假,空字符串/数组等):

{% if var|default is empty %} 
4
 //test if varibale exist 
    {% if var is defined %} 
     //todo 
    {% endif %} 

    //test if variable is not null 
    {% if var is not null %} 
     //todo 
    {% endif %} 
+0

为什么你认为这个答案比目前接受的更好? – 2013-08-28 08:07:54

+0

欢迎来到StackOverflow!与已经接受的答案有什么不同?它过时了吗?为什么你的答案比现有的答案好? – Artemix 2013-08-28 08:12:44

+0

@STTLCU他包括'如果var不为空'。 – crmpicco 2015-10-30 16:04:26

0

你也可以使用一个线做到这一点:

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}