Twig toán tử ternary, Shorthand if-then-other


149

Twig có hỗ trợ nhà điều hành ternary không?

Tôi cần một số logic có điều kiện như:

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

nhưng sử dụng tốc ký trong Twig.


Bạn có thể vui lòng xem xét thay đổi câu trả lời được chấp nhận? Tôi nghĩ rằng của tôi là toàn diện và hữu ích hơn cho cộng đồng vì nó bao gồm tất cả các loại tốc ký nếu trong Twig.
Pmpr

Câu trả lời:


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

Toán tử ternary được ghi lại dưới ' các toán tử khác '


1
Điều này rất hữu ích trong các tình huống như đánh dấu một nút hoặc mục là hoạt động cho trang hiện tại.
Vahid Amiri

Nếu TRUE, làm thế nào để bạn đi về khả năng in ấn. (thay cho "được chọn").
gdaniel

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

cảm ơn. Tôi đã gặp vấn đề in các biến twig khi bên trong các điều kiện nội tuyến. Tôi sẽ thử.
gdaniel

Tôi tự hỏi nếu điều này được cho là có thể hoạt động nội tuyến để thêm một giá trị thuộc tính như một lớp css? Nó dường như không hoạt động đối với tôi: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- muốn thêm một lớp css ở đây dựa trên điều kiện.
Jordan

114

Bạn có thể sử dụng cú pháp tốc ký kể từ Twig 1.12.0

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

82

Hỗ trợ cho toán tử ternary mở rộng đã được thêm vào trong Twig 1.12.0 .

  1. Nếu fooecho yeskhác echo no:

    {{ foo ? 'yes' : 'no' }}
  2. Nếu foolặp lại nó, tiếng vang khác no:

    {{ foo ?: 'no' }}

    hoặc là

    {{ foo ? foo : 'no' }}
  3. Nếu fooecho yeskhác echo không có gì:

    {{ foo ? 'yes' }}

    hoặc là

    {{ foo ? 'yes' : '' }}
  4. Trả về giá trị foonếu nó được xác địnhkhông null , nonếu không:

    {{ foo ?? 'no' }}
  5. Trả về giá trị foonếu nó được xác định ( giá trị trống cũng được tính), nonếu không:

    {{ foo|default('no') }}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.