default

这个 default 如果值未定义或为空,则filter返回传递的默认值,否则返回变量的值:

1
2
3
4
5
6
7
{{ var|default('var is not defined') }}

{{ var.foo|default('foo item on var is not defined') }}

{{ var['foo']|default('foo item on var is not defined') }}

{{ ''|default('passed var is empty')  }}

当使用 default 筛选在某些方法调用中使用变量的表达式,请确保使用 default 当变量未定义时过滤:

1
{{ var.method(foo|default('foo'))|default('foo') }}

使用 default 布尔变量上的筛选器可能会触发意外行为,例如 false 值被视为空。考虑使用 ?? 而是:

1
2
3
{% set foo = false %}
{{ foo|default(true) }} {# true #}
{{ foo ?? true }} {# false #}

注解

请阅读 definedempty 测试以了解更多关于它们的语义。

争论

  • default :默认值