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.


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 '


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' : '' }}

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') }}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.