我了解default
过滤器的用法如下:items|default(posts)
但是,我偶然发现了一些使用它的代码,但没有传递arg:
{% if ( posts|default ) %}
{% endif %}
实际上它什么也没做,只是不完整或样板代码,但我想仔细检查。
我了解default
过滤器的用法如下:items|default(posts)
但是,我偶然发现了一些使用它的代码,但没有传递arg:
{% if ( posts|default ) %}
{% endif %}
实际上它什么也没做,只是不完整或样板代码,但我想仔细检查。
不传递任何参数,default
过滤器将导致twig
返回空字符串(''
)。还值得一提的是,在twig
中,如果测试一个空字符串,将导致false
。
因此,在这种情况下,如果未定义post
变量,false或空字符串,则过滤器将返回空字符串,而if将返回值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 %}