format_currency
format_currency
过滤器将数字格式化为货币
1 2
{# €1,000,000.00 #}
{{ '1000000'|format_currency('EUR') }}
您可以传递属性来调整输出
1 2 3 4 5
{# €12.34 #}
{{ '12.345'|format_currency('EUR', {rounding_mode: 'floor'}) }}
{# €1,000,000.0000 #}
{{ '1000000'|format_currency('EUR', {fraction_digit: 4}) }}
支持选项的列表
grouping_used
: 指定是否使用千位分组分隔符1 2
{# €1,234,567.89 #} {{ 1234567.89 | format_currency('EUR', {grouping_used:true}, 'en') }}
decimal_always_shown
: 指定是否始终显示小数部分,即使它为零1 2
{# €123.00 #} {{ 123 | format_currency('EUR', {decimal_always_shown:true}, 'en') }}
max_integer_digit
:min_integer_digit
:integer_digit
: 定义整数部分的约束1 2
{# €345.68 #} {{ 12345.6789 | format_currency('EUR', {max_integer_digit:3, min_integer_digit:2}, 'en') }}
max_fraction_digit
:min_fraction_digit
:fraction_digit
: 定义小数部分的约束1 2
{# €123.46 #} {{ 123.456789 | format_currency('EUR', {max_fraction_digit:2, min_fraction_digit:1}, 'en') }}
multiplier
: 在格式化之前乘以该值1 2
{# €123,000.00 #} {{ 123 | format_currency('EUR', {multiplier:1000}, 'en') }}
grouping_size
:secondary_grouping_size
: 设置主要和次要分组分隔符的大小1 2
{# €1,23,45,678.00 #} {{ 12345678 | format_currency('EUR', {grouping_size:3, secondary_grouping_size:2}, 'en') }}
rounding_mode
:rounding_increment
: 控制舍入行为,以下是所有可用的 rounding_mode 列表ceil
: 向上舍入floor
: 向下舍入down
: 向零舍入up
: 远离零舍入half_even
: 将一半舍入到最接近的偶数整数half_up
: 将一半向上舍入half_down
: 将一半向下舍入
1 2
{# €123.50 #} {{ 123.456 | format_currency('EUR', {rounding_mode:'ceiling', rounding_increment:0.05}, 'en') }}
format_width
:padding_position
: 为格式化的数字设置宽度和填充,以下是所有可用的 padding_position 列表before_prefix
: 在货币符号前填充after_prefix
: 在货币符号后填充before_suffix
: 在后缀(货币符号)前填充after_suffix
: 在后缀(货币符号)后填充
1 2
{# €123.00 #} {{ 123 | format_currency('EUR', {format_width:10, padding_position:'before_suffix'}, 'en') }}
significant_digits_used
:min_significant_digits_used
:max_significant_digits_used
: 控制格式化中的有效数字1 2
{# €123.4568 #} {{ 123.456789 | format_currency('EUR', {significant_digits_used:true, min_significant_digits_used:4, max_significant_digits_used:7}, 'en') }}
lenient_parse
: 如果为 true,则允许宽松解析输入1 2
{# €123.00 #} {{ 123 | format_currency('EUR', {lenient_parse:true}, 'en') }}
默认情况下,过滤器使用当前区域设置。您可以显式传递它
1 2
{# 1.000.000,00 € #}
{{ '1000000'|format_currency('EUR', locale: 'de') }}
注意
format_currency
过滤器是 IntlExtension
的一部分,默认情况下未安装。请先安装它
1
$ composer require twig/intl-extra
然后,在 Symfony 项目中,安装 twig/extra-bundle
1
$ composer require twig/extra-bundle
否则,在 Twig 环境中显式添加扩展
1 2 3 4
use Twig\Extra\Intl\IntlExtension;
$twig = new \Twig\Environment(...);
$twig->addExtension(new IntlExtension());
参数
currency
: 货币(ISO 4217 代码)attrs
: 属性映射locale
: 区域设置代码,如 RFC 5646 中定义
注意
在内部,Twig 使用 PHP 的 NumberFormatter::formatCurrency 函数。