Twig三元运算符,if-then-else的简写


149

Twig是否支持三元运算符?

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

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

但在Twig中使用速记。


您可以考虑更改接受的答案吗?我认为我的文档对社区更加全面和有用,因为它涵盖了Twig中的所有速记类型。
Pmpr

Answers:


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

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


1
这在将按钮或项目标记为当前页面处于活动状态的情况下非常有用。
Vahid Amiri

如果为TRUE,您将如何打印能力。(代替“选定”)。
gdaniel

1
@gdaniel{{ (ability.id in company_abilities) ? ability.id : '' }}
Ben Swinburne

谢谢。我在内联条件中打印树枝变量时遇到了问题。我将尝试一下。
gdaniel

我想知道这是否应该能够内联添加像CSS类这样的属性值?它似乎对我不起作用:<div class="my-section {{ model.event.eventDate ? 'half' : '' }}">- 希望根据条件在此处添加CSS类。
约旦

114

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

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

82

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

  1. 如果foo回声,yes否则回声no

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

    {{ foo ?: 'no' }}

    要么

    {{ foo ? foo : 'no' }}
  3. 如果foo回声,yes则不回声:

    {{ foo ? 'yes' }}

    要么

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

    {{ foo ?? 'no' }}
  5. 返回foo是否已定义的值(值也将计数),no否则:

    {{ foo|default('no') }}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.