webentwicklung-frage-antwort-db.com.de

Ternäre Operatoren in Twig php (Kurzform von if-then-else)

Ist es möglich, ternäre Operatoren in twig template zu verwenden? Nun, um dem DOM-Element eine Klasse hinzuzufügen, muss ich folgende Bedingungen erfüllen:

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

Anstatt

<tr class="<?=in_array($ability->id, $company_abilities) ? 'selected' : ''?>">

in nativen PHP-Template-Engine.

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

Der ternäre Operator ist unter ' andere Operatoren ' dokumentiert.

257
Ben Swinburne

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

Der ternäre Operator (?:)

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

  1. Fall 1

    Snippet:

    {{ foo ? 'yes' : 'no' }}
    

    Wertet aus:

    if foo echo yes else echo no


  2. Fall # 2

    Snippet:

    {{ foo ?: 'no' }}
    

    oder

    {{ foo ? foo : 'no' }}
    

    Wertet aus:

    wenn foo es ausgeben, sonst no ausgeben


  3. Fall # 3

    Snippet:

    {{ foo ? 'yes' }}
    

    oder

    {{ foo ? 'yes' : '' }}
    

    Wertet aus:

    wenn foo echo yes sonst echo nichts


Der Null-Koaleszenz-Operator (??)

  1. Fall 1

    Snippet:

    {{ foo ?? 'no' }}
    

    Wertet aus:

    Gibt den Wert von foo zurück, wenn definiert ist und nicht null, andernfalls no

Anmerkung: Dies unterscheidet sich geringfügig von {{ foo|default('no') }}, da letzteres auch bei leeren Werten wie '' Ausgelöst wird.

70
Pmpr