【问题标题】:Does Twig have a null coalesce operator?Twig 有空合并运算符吗?
【发布时间】:2012-11-07 06:08:31
【问题描述】:

我正在使用Twig PHP 模板引擎。

是否有可用的运算符输出第一个非空值(合并)?

例如(使用 PHP 伪代码):

{{ title ?: "Default Title" }}

我知道我可以做这样的事情,但是有点啰嗦:

{% if title %}{{ title }}{% else %}{{ "Default Title" }}{% endif %}

【问题讨论】:

  • 答案由@molecularman 提供,但我想让您知道您可以缩短最后一个示例:{{ title ? title : 'Default Title' }}

标签: twig coalesce


【解决方案1】:

是的,有一个名为default 的过滤器。您可以将其应用于您的代码,如下所示:

{{ title|default("Default Title") }}

【讨论】:

  • 这是不正确的,default 执行类似布尔的评估,例如表示非空值false 也将替换为默认值。从 Twig v1.24 开始,最好使用 ?? 运算符。见twig.symfony.com/doc/2.x/tests/empty.html
【解决方案2】:

从 Twig 1.12.0 开始,它确实具有 ?: 运算符,但它并不是真正的“空值合并”。它检查真实性,而不仅仅是空值,因此0 ?: 1 会出现1

Documentation

【讨论】:

    【解决方案3】:

    Twig 1.24(2016 年 1 月 25 日)正式引入了 null-coalescing 运算符。

    * adding support for the ?? operator

    这意味着现在可以做到这一点......

    {{ title ?? "Default Title" }}
    

    您甚至可以将它们链接在一起,以检查多个变量,直到找到有效的非空值。

    {{ var1 ?? var2 ?? var3 ?? var4 }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2013-09-13
      • 2015-03-27
      • 2023-03-23
      • 2012-09-23
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多