Twig içinde null için nasıl kontrol edilir?


279

Bir Twig şablonunda bir değerin NULL olup olmadığını kontrol etmek için hangi yapıyı kullanmalıyım?

Yanıtlar:


516

Tam olarak neye ihtiyacınız olduğuna bağlı olarak:

  • is nulldeğerin olup olmadığını kontrol eder null:

    {% if var is null %}
        {# do something #}
    {% endif %}
  • is defined değişkenin tanımlanıp tanımlanmadığını kontrol eder:

    {% if var is not defined %}
        {# do something #}
    {% endif %}

Ayrıca is sameasiki değer bir tür sıkı bir karşılaştırma yapar testi dışında kalan değerlerin kontrolü için ilgi çekici olabilir null(gibi false):

{% if var is sameas(false) %}
    {# do something %}
{% endif %}

71
Ve bir şeyin boş olup olmadığını kontrol etmek için basitçe yapın{% if var is not null %}
J.-BC

4
hızlı not: $ var == null $ var 0 ile true, ancak $ var null false döndürür
daSn0wie

Ayrıca $ var boşsa $ var == 0
ifadesinin

Ayrıca, PHP isset()işlevinden farklı olarak, bir değişken tanımlanmışsa ve değeri null is definedise geri döner true.
Pavel Petrov

1
Uyarı: gibi değişken için Twig 2.x onay değerine eşit olduğu gibi is_ sameasolmalıdır {% if var is same as(false) %}değil {% if var is sameas(false) %}bakın Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
ahmed hamdy

127

Dalda varsayılan değerler nasıl ayarlanır: http://twig.sensiolabs.org/doc/filters/default.html

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

Veya null olduğunda görüntülenmesini istemiyorsanız:

{{ my_var | default("") }}

1
Öyleyse undefined or emptyve arasında ayrım yapar nullmı?
Kabarık

6
Bu kontrol etmek için doğru yol gibi görünüyor ... Utanç çok upvotes yok.
mr-sk

1
Tam aradığım şey. Emin olmak zorunda | varsayılan olarak aşağıdaki gibi başka bir değişkeni varsayılan olarak deneyebilirsiniz: {{my_var | default (my_var2)}} Az önce test ettim, ancak böyle zincirlemeye bile devam edebilirsiniz: {{my_var | varsayılan (my_var2) | varsayılan ("my_var ve my_var2 mevcut değil")}}
CTS_AE

34

Herhangi bir varsayım olmadan cevap:

{% if var is null %}

Ancak bu yalnızca vartam olarak doğruysa NULLve değerlendirilen başka bir değer değilse false(sıfır, boş dize ve boş dizi gibi) geçerli olacaktır. Ayrıca, vartanımlanmamışsa bir hataya neden olacaktır . Daha güvenli bir yol:

{% if var is not defined or var is null %}

kısaltılabilir:

{% if var|default is null %}

defaultFiltreye bir bağımsız değişken sağlamazsanız , bunun varsayıldığı varsayılır NULL(bir tür varsayılan varsayılan). Yani bir değişkenin boş olup olmadığını kontrol etmek için en kısa ve en güvenli yol (biliyorum) (boş, yanlış, boş dize / dizi, vb.):

{% if var|default is empty %}

7

Yapabileceğini sanmıyorum. Bunun nedeni, bir değişken dal şablonunda tanımlanmamışsa (ayarlanmadıysa) NULLveya none(dal terimleriyle) gibi görünmesidir . Bu şablonda meydana gelen kötü erişim hataları bastırmak için eminim.

Twig ( ===) ' de bir "kimlik" bulunmaması nedeniyle yapabileceğiniz en iyi şey budur

{% if var == null %}
    stuff in here
{% endif %}

Bunun anlamı:

if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
  echo "stuff in here";
}

Senin adresinden iyi olursa hangi tür hokkabazlık , araçlar gibi işler o 0, '', FALSE, NULL, ve tanımlanmamış bir var da bu ifade doğru yapacaktır.

Benim önerim kimliğin Twig'e uygulanmasını istemek.


2
Kendall, bunu uyguladıklarını önermek konusunda haklı - Twig'in github sorun izleyicisine uygulanacak şeyler isteyen iyi deneyimlerden başka bir şeyim yoktu. Çok arkadaş canlısı ve profesyoneller.
Shabbyrobe

@ kendall-hopkins Merak ettim, ne zaman kullanılmalı {if var is none}ve PHP eşdeğeri nedir?
noisebleed

@ noisebleed {% if abcxyz is none %}olur if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }. Temelde değer tanımsız veya null ise, doğru olacaktır.
Kendall Hopkins

1
@noisebleed Ayrıca refnone için bir takma addır . null
Kendall Hopkins

Bu cevaba denk da kullanılması olacaktır {% if var is empty %} twig.sensiolabs.org/doc/tests/empty.html PHP çevirir if (empty($var))bir Falsey değerine karşılık değerlendirir (yani !isset, null, 0, array(), "", false, "0", 0.0) php.net/manual/en/function.empty.php You yapabilirsiniz {% if var is same as(var) %}kimlik için de kullanın ( ===). twig.sensiolabs.org/doc/tests/sameas.html
fyrye

5
     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

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

Sizce bu cevap şu anda kabul edilen cevaptan daha iyi mi?
STT LCU

StackOverflow'a hoş geldiniz! Zaten kabul edilen cevaptan farkı nedir? Eski mi? Cevabınız neden mevcut olanlardan daha iyidir?
Artemix

@STTLCU O dahil if var is not null.
crmpicco

4

Bunu yapmak için bir satır da kullanabilirsiniz:

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

3

aşağıdaki kodu kullanarak

{% if var is defined %}

var is variable is SET

{% endif %}

0

Ayrıca değişkeniniz bir ARRAY ise , birkaç seçenek vardır:

{% if arrayVariable[0] is defined %} 
    #if variable is not null#
{% endif %}

VEYA

{% if arrayVariable|length > 0 %} 
    #if variable is not null# 
{% endif %}

Bu yalnızca is definedVE dizinizNULL

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.