176

Twig 是否支持三元(速记 if-else)运算符?

我需要一些条件逻辑,例如:

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

但在 Twig 中使用速记。

4

5 回答 5

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

三元运算符记录在“其他运算符”下

于 2012-08-05T21:51:14.693 回答
131

从 Twig 1.12.0 开始,您可以使用速记语法

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}
于 2014-07-21T07:32:28.877 回答
103

Twig 1.12.0添加了对扩展三元运算符的支持。

  1. 如果fooyes显,则回显no

    {{ foo ? 'yes' : 'no' }}
    
  2. 如果foo回显它,否则回显no

    {{ foo ?: 'no' }}
    

    或者

    {{ foo ? foo : 'no' }}
    
  3. 如果fooecho yeselse 不回显:

    {{ foo ? 'yes' }}
    

    或者

    {{ foo ? 'yes' : '' }}
    
  4. foo如果它已定义且不为null,则返回 的值,no否则:

    {{ foo ?? 'no' }}
    
  5. foo如果已定义,则返回值(值也计算在内),no否则:

    {{ foo|default('no') }}
    
于 2016-11-15T09:11:40.307 回答
2

例如,如果数据库中存在价格,则 print (Price is $$$) else print (Not Available)~Twig.

{{ Price is defined ? 'Price is '~Price : 'Not Available' }}
于 2021-03-31T02:39:40.487 回答
0

我只是用作a通用变量名。如果其他情况像这样,您也可以使用无穷无尽:

{{ a == 1 ? 'first' : a == 2 ? 'second' : 'third' }}
于 2021-08-10T09:48:10.480 回答