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

Posted

技术标签:

【中文标题】Twig 三元运算符,简写 if-then-else【英文标题】:Twig ternary operator, Shorthand if-then-else 【发布时间】:2012-08-02 22:52:03 【问题描述】:

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

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

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

但在 Twig 中使用简写。

【问题讨论】:

【参考方案1】:
 (ability.id in company_abilities) ? 'selected' : '' 

三元运算符记录在“other operators”下

【讨论】:

这在将按钮或项目标记为当前页面的活动等情况下非常有用。 如果为真,您将如何处理打印能力.id? (代替“选定”)。 @gdaniel (ability.id in company_abilities) ? ability.id : '' 谢谢。在内联条件中打印树枝变量时遇到问题。我会试试看。 我想知道这是否应该能够内联工作以添加像css类这样的属性值?它似乎对我不起作用:&lt;div class="my-section model.event.eventDate ? 'half' : '' "&gt; --想根据条件在此处添加一个 css 类。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

    如果foo回显yes否则回显no

     foo ? 'yes' : 'no' 
    

    如果foo回显它,否则回显no

     foo ?: 'no' 
    

     foo ? foo : 'no' 
    

    如果foo 回显yes 否则不回显:

     foo ? 'yes' 
    

     foo ? 'yes' : '' 
    

    如果foo已定义非空,则返回no的值,否则返回no

     foo ?? 'no' 
    

    如果是已定义值也算),则返回foo的值,否则返回no

     foo|default('no') 
    

【讨论】:

【参考方案4】:

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

 Price is defined ? 'Price is '~Price : 'Not Available' 

【讨论】:

如果 Price 等于 0,它将评估为 false 并显示“不可用”而不是 0,不是吗? 我已更改为已定义【参考方案5】:

我只是使用a 作为通用变量名。你也可以像这样使用无穷无尽的:

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

【讨论】:

以上是关于Twig 三元运算符,简写 if-then-else的主要内容,如果未能解决你的问题,请参考以下文章

PHP中三元运算符的简写

JavaScript 常用的简写技巧

13 三元运算

三元运算

三元运算

JavaScript 速记三元运算符