Zweig ternärer Operator, Kurzschrift wenn-dann-sonst


148

Unterstützt Twig den ternären Operator?

Ich brauche eine bedingte Logik wie:

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

aber mit Kurzschrift in Twig.


Könnten Sie bitte in Betracht ziehen, die akzeptierte Antwort zu ändern? Ich denke, meine ist umfassender und nützlicher für die Community, da sie alle Arten der Kurzschrift abdeckt, wenn sie in Twig ist.
Pmpr

Antworten:


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

Der ternäre Operator ist unter " Andere Operatoren " dokumentiert .


1
Dies ist sehr hilfreich in Situationen wie dem Markieren einer Schaltfläche oder eines Elements als aktiv für die aktuelle Seite.
Vahid Amiri

Wenn TRUE, wie gehen Sie beim Drucken von Fähigkeit.id vor? (anstelle von "ausgewählt").
Gdaniel

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

Vielen Dank. Ich habe Probleme beim Drucken von Zweigvariablen innerhalb von Inline-Bedingungen. Ich werde es versuchen.
Gdaniel

Ich frage mich, ob dies inline funktionieren soll, um einen Attributwert wie eine CSS-Klasse hinzuzufügen. Es scheint für mich nicht zu funktionieren: <div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- Ich möchte hier basierend auf der Bedingung eine CSS-Klasse hinzufügen.
Jordanien

114

Sie können die Kurzschrift-Syntax ab Twig 1.12.0 verwenden

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

82

Die Unterstützung für den erweiterten ternären Operator wurde in Twig 1.12.0 hinzugefügt .

  1. Wenn fooecho yessonst echo no:

    {{ foo ? 'yes' : 'no' }}
  2. Wenn fooEcho, sonst Echo no:

    {{ foo ?: 'no' }}

    oder

    {{ foo ? foo : 'no' }}
  3. Wenn fooEcho yessonst Echo nichts:

    {{ foo ? 'yes' }}

    oder

    {{ foo ? 'yes' : '' }}
  4. Gibt den Wert von zurück, foowenn er definiert und nicht null ist , noandernfalls:

    {{ foo ?? 'no' }}
  5. Gibt den Wert von zurück, foowenn er definiert ist ( leere Werte zählen auch), noandernfalls:

    {{ foo|default('no') }}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.