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.

Meliborn
quelle
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 .

Ben Swinburne
quelle
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' : '' }}
mgalisch
quelle
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') }}
Pmpr
quelle