Twig有一个null coalesce运算符吗?

Adr*_*eil 8 coalesce twig

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

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

例如(使用PHP伪代码):

{{ title ?: "Default Title" }}
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做,但有点啰嗦:

{% if title %}{{ title }}{% else %}{{ "Default Title" }}{% endif %}
Run Code Online (Sandbox Code Playgroud)

Lin*_*y D 22

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

*增加对??运营商的支持

这意味着现在可以这样做......

{{ title ?? "Default Title" }}
Run Code Online (Sandbox Code Playgroud)

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

{{ var1 ?? var2 ?? var3 ?? var4 }}
Run Code Online (Sandbox Code Playgroud)


Mol*_*Man 12

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

{{ title|default("Default Title") }}
Run Code Online (Sandbox Code Playgroud)

  • 这是不正确的,“default”执行类似布尔值的计算,这意味着非空值“false”也将被替换为默认值。从 Twig v1.24 开始,最好使用 `??` 运算符。请参阅 https://twig.symfony.com/doc/2.x/tests/empty.html (3认同)

mpe*_*pen 6

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

文档