You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:02:00