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

Twig 3.x format_currency过滤器选项文档及千位分隔符不显示问题

问题现象
  • 运行环境:Twig 3.x,已安装启用PHP Intl扩展
  • 故障表现:使用format_currency过滤器输出本地化货币时,货币类型、小数位数配置可正常生效,但输出结果无千位分隔符
  • 原调用代码:
{{ reservation.balance_due|format_currency('USD',{fraction_digit: 0}) }}
  • 实际输出:$ 1234,不符合带千位分隔符的预期
  • 排查卡点:找不到format_currency过滤器的选项公开说明文档,部分选项(如grouping_used)命名含义不明确,无法定位是配置错误还是使用方式问题。
原因说明

format_currency底层依赖PHP Intl扩展的NumberFormatter类实现格式化,传入的属性参数会直接映射到NumberFormatter的格式化属性,问题来自两点:

  1. 小数位数参数名拼写错误:正确的属性名是fraction_digits(复数形式),原代码写的单数fraction_digit是无效参数,不会被解析生效
  2. 传入自定义属性数组时,数字千位分组(即千位分隔符)规则不会默认继承本地化配置,需要显式开启。你提到的grouping_used就是控制该功能的开关,参数值设为true时就会按照当前本地化规则自动插入千位分隔符。
修复方案

将过滤器调用改为如下写法即可:

{{ reservation.balance_due|format_currency('USD', {
    fraction_digits: 0,
    grouping_used: true
}) }}

传入1234作为金额时,上述代码会正常输出带千位分隔符的$1,234格式结果。

如果需要调整其他格式化规则,直接参考PHP Intl扩展中NumberFormatter的属性命名传参即可,format_currency没有单独的专属参数规则。

内容的提问来源于stack exchange,提问作者mike traveller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:42:26