Twig ternary operatörü, Shorthand if-then-else


150

Twig, üçlü (shorthand if-else) operatörünü destekliyor mu?

Bazı koşullu mantığa ihtiyacım var:

{%if ability.id in company_abilities %}
    <tr class="selected">
{%else%}
    <tr>
{%endif%}

ancak Twig'de steno kullanarak.

Yanıtlar:


297
{{ (ability.id in company_abilities) ? 'selected' : '' }}

Üçlü operatör ' diğer operatörler ' altında belgelenmiştir


1
Bu, bir düğmeyi veya öğeyi geçerli sayfa için etkin olarak işaretlemek gibi durumlarda çok yararlıdır.
— Vahid Amiri

DOĞRU ise, yetenek.id'yi nasıl yazdırırsınız? ("seçilen" yerine).
— gdaniel

1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
— Ben Swinburne

Teşekkürler. Satır içi koşulların içindeyken dal değişkenlerini yazdırırken sorunlar yaşıyorum. Bunu bir deneyeceğim.
— gdaniel

Bunun bir css sınıfı gibi bir öznitelik değeri eklemek için satır içi çalışıp çalışamayacağını merak ediyorum. Benim için işe yaramıyor gibi görünüyor: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- koşula bağlı olarak buraya bir css sınıfı eklemek istemek.
— Ürdün

116

Twig 1.12.0'dan itibaren steno sözdizimini kullanabilirsiniz.

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}

85

Genişletilmiş üçlü operatör için destek, Twig 1.12.0'da eklendi .

  1. Eğer fooyankı yesbaşka yankı no:

    {{ foo ? 'yes' : 'no' }}
    
  2. Eğer fooyankı o başka yankı no:

    {{ foo ?: 'no' }}
    

    veya

    {{ foo ? foo : 'no' }}
    
  3. Eğer fooyankı yesbaşka hiçbir şeyi yansıtmazsa:

    {{ foo ? 'yes' }}
    

    veya

    {{ foo ? 'yes' : '' }}
    
  4. Değerini döndürür fooo takdirde tanımlanmış ve değil null adlı , noaksi:

    {{ foo ?? 'no' }}
    
  5. Değerini verir foobu ise tanımlanan ( boş değerler de önemlidir), noaksi takdirde:

    {{ foo|default('no') }}
    
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.