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

Symfony 5.X下Twig的format_currency在开发与测试环境输出差异问题

问题原因排查及解决方案

核心原因归类

  • 参数拼写不兼容:你当前使用的参数名fraction_digit为单数形式,旧版本的Twig Intl Extra扩展仅识别复数形式的fraction_digits参数。如果本地环境的扩展版本较高做了兼容性处理,就会出现本地正常、测试环境参数被忽略的情况,直接修改过滤器写法为|format_currency("USD", {fraction_digits: 0})即可验证该问题。
  • PHP intl扩展版本差异:format_currency过滤器底层依赖PHP intl扩展的NumberFormatter能力,两个环境的intl扩展版本不一致时,低版本会存在无法手动覆盖货币默认小数位的问题。你可以在两个环境执行以下代码验证:
    $formatter = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
    $formatter->setAttribute(\NumberFormatter::FRACTION_DIGITS, 0);
    echo $formatter->formatCurrency(2, 'USD');
    
    如果测试环境执行上述代码仍然输出$2.00,则需要将测试环境的intl扩展升级到和本地一致的版本。
  • Symfony全局配置覆盖:Symfony5支持在Twig配置中设置全局货币格式规则,测试环境的专属配置(一般为config/packages/test/twig.yaml)如果设置了全局的货币小数位参数,会优先覆盖过滤器传入的临时参数,检查是否存在以下配置:
    twig:
        extensions:
            Twig\Extra\Intl\IntlExtension:
                currency:
                    fraction_digits: 2
    
    存在则删除该全局配置,或者将数值修改为0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:36:03