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.