如果未提供任何参数,Twig的“默认”过滤器会做什么?

我了解default过滤器的用法如下:items|default(posts)

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

{% if ( posts|default ) %}


{% endif %}

实际上它什么也没做,只是不完整或样板代码,但我想仔细检查。

ccqqilindi 回答:如果未提供任何参数,Twig的“默认”过滤器会做什么?

不传递任何参数,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 %}

demo

本文链接:https://www.f2er.com/2729200.html

大家都在问