2010-07-16 27 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" }}