如果没有提供参数,Twig 的 'default' 过滤器会做什么?

What does Twig's 'default' filter do if no argument is provided?

我理解 default 过滤器如果像这样使用会如何表现:items|default(posts)

但是,我偶然发现了一些使用它但没有传递 arg 的代码:

{% if ( posts|default ) %}


{% endif %}

有可能它实际上什么都没做,只是不完整或样板代码,但我想仔细检查一下。

不传递任何参数 default 过滤器将导致 twig return 空字符串 ('')。还值得一提的是,在 twig 中,如果您测试一个空字符串,它将导致 false.

因此在这种情况下,如果未定义 post 变量、false 或空字符串,过滤器将 return 一个空字符串,如果 return 值 false 从而忽略代码块内的代码


{% set foo = bar|default %}
{{ foo == '' ? 'empty string' : 'not an empty string' }}

{% if '' %}
    Do something
{% else %}
    Don't do anything
{% endif %}


--------------------------------

{% set var1 = false %}
{% set var2 = {} %}


{% if var1 | default %}
    Do sthing with var1
{% else %}
    Don't do anything with var1
{% endif %}


{% if var2 | default %}
    Do sthing with var2
{% else %}
    Don't do anything with var2
{% endif %}


{% if var3 | default %}
    Do sthing with var3
{% else %}
    Don't do anything with var3
{% endif %}

demo