Ternary operators in Twig php (Shorthand form of if-then-else)

懵懂的女人 提交于 2019-11-27 09:22:22

问题


Is it possible to use ternary operators in twig template? Now, for adding some class to DOM element depend on some condition I do like this:

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

Instead of

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

in native php template engine.


回答1:


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

The ternary operator is documented under 'other operators'




回答2:


You can use shorthand syntax as of Twig 1.12.0

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



回答3:


The ternary operator (?:)

Support for the extended ternary operator was added in Twig 1.12.0.

  1. Case #1

    Snippet:

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

    Evaluates:

    if foo echo yes else echo no


  2. Case #2

    Snippet:

    {{ foo ?: 'no' }}
    

    or

    {{ foo ? foo : 'no' }}
    

    Evaluates:

    if foo echo it, else echo no


  3. Case #3

    Snippet:

    {{ foo ? 'yes' }}
    

    or

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

    Evaluates:

    if foo echo yes else echo nothing


The null-coalescing operator (??)

  1. Case #1

    Snippet:

    {{ foo ?? 'no' }}
    

    Evaluates:

    Returns the value of foo if it is defined and not null, no otherwise

Note: this is slightly different from {{ foo|default('no') }}, since the latter will be triggered also from empty values like ''.



来源:https://stackoverflow.com/questions/11820297/ternary-operators-in-twig-php-shorthand-form-of-if-then-else

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!