Twig中的三元运算符php(if-then-else的简写形式)

时间:2012-08-05 21:41:54

标签: php twig ternary-operator

是否可以在树枝模板中使用三元运算符?现在,为了将一些类添加到DOM元素取决于某些条件我喜欢这样:

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

而不是

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

在本机php模板引擎中。

5 个答案:

答案 0 :(得分:233)

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

三元运算符记录在“other operators

答案 1 :(得分:95)

您可以使用Twig 1.12.0的简写语法

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

答案 2 :(得分:66)

三元运算符(?:

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

  1. 案例#1

    <强>段:

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

    <强>评估板:

      

    if foo echo yes else echo no

  2. 案例#2

    <强>段:

    {{ foo ?: 'no' }}
    

    {{ foo ? foo : 'no' }}
    

    <强>评估板:

      

    如果foo回应它,则回显no

  3. 案例#3

    <强>段:

    {{ foo ? 'yes' }}
    

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

    <强>评估板:

      

    如果foo echo yes否则回显

  4. null-coalescing运算符(??

    1. 案例#1

      <强>段:

      {{ foo ?? 'no' }}
      

      <强>评估板:

        

      如果<{>>已定义且不为空,则返回foo的值,否则返回no

    2. 注意:这与{{ foo|default('no') }}略有不同,因为后者也会从''等空值触发。

答案 3 :(得分:0)

例如,如果价格存在于数据库中,则打印(价格为 $$$),否则打印(不可用)和 ~ 以用于 Twig 中的连接。

{{ Price ? 'Price is '~Price : 'Not Available' }}

答案 4 :(得分:0)

我只是使用 a 作为通用变量名。你也可以使用endless if else:

{{ a == 1 ? 'first' : a == 2 ? 'second' : 'third' }}