Operator ranting ternary, Singkatan jika-maka-lain

149

Apakah Twig mendukung operator ternary?

Saya memerlukan beberapa logika kondisional seperti:

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

tetapi menggunakan steno di Ranting.

Meliborn
sumber
Bisakah Anda mempertimbangkan untuk mengubah jawaban yang diterima? Saya pikir tambang saya lebih komprehensif dan berguna bagi masyarakat karena mencakup semua jenis steno jika dalam Ranting.
Pmpr

Jawaban:

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

Operator ternary didokumentasikan di bawah ' operator lain '

Ben Swinburne
sumber
1
Ini sangat membantu dalam situasi seperti menandai tombol atau item sebagai aktif untuk halaman saat ini.
Vahid Amiri
Jika BENAR, bagaimana Anda bisa mencetak kemampuan.id? (di tempat "terpilih").
gdaniel
1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
Ben Swinburne
Terima kasih. Saya telah mengalami masalah mencetak variabel ranting ketika di dalam kondisi inline. Saya akan mencoba ini.
gdaniel
Saya bertanya-tanya apakah ini seharusnya dapat bekerja inline untuk menambahkan nilai atribut seperti kelas css? Tampaknya tidak berfungsi untuk saya: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- ingin menambahkan kelas css di sini berdasarkan kondisi.
Jordan
114

Anda dapat menggunakan sintaks steno pada Ranting 1.12.0

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

Dukungan untuk operator terner diperpanjang ditambahkan dalam Ranting 1.12.0 .

  1. Jika foogema yeslagi gema no:

    {{ foo ? 'yes' : 'no' }}
  2. Jika foogema, gema lain no:

    {{ foo ?: 'no' }}

    atau

    {{ foo ? foo : 'no' }}
  3. Jika foogema yeslagi gema tidak ada:

    {{ foo ? 'yes' }}

    atau

    {{ foo ? 'yes' : '' }}
  4. Mengembalikan nilai foojika didefinisikan dan bukan nol , nojika tidak:

    {{ foo ?? 'no' }}
  5. Mengembalikan nilai foojika didefinisikan ( nilai kosong juga dihitung), nojika tidak:

    {{ foo|default('no') }}
Pmpr
sumber