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

Mel*_*orn 134 php ternary-operator twig

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

{%if ability.id in company_abilities%}
    <tr class="selected">
{%else%}
    <tr>
{%endif%}
Run Code Online (Sandbox Code Playgroud)

代替

<tr class="<?=in_array($ability->id, $company_abilities) ? 'selected' : ''?>">
Run Code Online (Sandbox Code Playgroud)

在本机的PHP模板引擎.

Ben*_*rne 268

{{ (ability.id in company_abilities) ? 'selected' : '' }}
Run Code Online (Sandbox Code Playgroud)

三元运算符记录在" 其他运算符 "下

  • 这在将按钮或项目标记为当前页面活动的情况下非常有用。 (2认同)
  • @gdaniel `{{(company_bility中的ability.id)?能力.id : '' }}` (2认同)

mga*_*lic 104

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

{{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }}
{{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }}
Run Code Online (Sandbox Code Playgroud)


Pmp*_*mpr 74

三元运算符(?:)

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

  1. 情况1

    片段:

    {{ foo ? 'yes' : 'no' }}
    
    Run Code Online (Sandbox Code Playgroud)

    评估:

    如果foo回应yes其他回声no


  2. 案例#2

    片段:

    {{ foo ?: 'no' }}
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    {{ foo ? foo : 'no' }}
    
    Run Code Online (Sandbox Code Playgroud)

    评估:

    如果foo回应它,否则回声no


  3. 案例#3

    片段:

    {{ foo ? 'yes' }}
    
    Run Code Online (Sandbox Code Playgroud)

    要么

    {{ foo ? 'yes' : '' }}
    
    Run Code Online (Sandbox Code Playgroud)

    评估:

    如果fooecho yes其他没有回音


null-coalescing运算符(??)

  1. 情况1

    片段:

    {{ foo ?? 'no' }}
    
    Run Code Online (Sandbox Code Playgroud)

    评估:

    返回的值foo,如果它被定义并且不为空,no否则

注意:这与稍有不同{{ foo|default('no') }},因为后者也将从空值中触发''.


Vin*_*nci 8

例如,如果数据库中存在价格,则打印(价格为 $$$),否则打印(不可用),并且~对于 中的串联Twig

{{ Price is defined ? 'Price is '~Price : 'Not Available' }}
Run Code Online (Sandbox Code Playgroud)

  • 如果“Price”等于 0,它将计算为 false 并显示“不可用”而不是 0,不是吗? (3认同)