Twig default过滤器处理已定义布尔值false的结果疑问
理解Twig的
default过滤器行为 这其实是Twig的default过滤器的默认逻辑导致的——它不仅仅检查变量是否已定义,还会把所有Twig认定为“空值”(falsy values)的内容都替换成默认值。
具体来说:
- Twig里的“空值”包括:
false、null、空字符串''、数字0、空数组[],以及未定义的变量。 - 你的代码里
ico_only被设置为false,正好属于这个“空值”列表,所以default(true)会触发替换,返回true。
如果想只在变量未定义时才用默认值:
你可以给default过滤器传递第二个参数true,它会强制过滤器只检查变量是否存在,而忽略值是否为假:
{% set ico_only = false %} {{ dump(ico_only|default(true, true)) }} {# 这里会输出false #}
简单总结下:
- 默认的
default过滤器:替换未定义变量 + 所有假值 - 带第二个参数
true的default过滤器:只替换未定义变量
内容的提问来源于stack exchange,提问作者Gaylord.P
相关产品推荐
相关产品推荐

