在树枝模板中格式化钱


Answers:


114

number_format自2011年12月底以来,该过滤器已包含在Twig核心中。相关提交在此处

用法: number_format(decimals, decimalSeparator, thousandSeparator)

{{ total|number_format(2) }}
{{ total|number_format(0, '.') }}
{{ total|number_format(2, '.', ',') }}

文档中阅读有关它的更多信息


3
没有办法使此用户区域敏感吗?
fnagel

10
令人惊讶的是,没有一个文档和一个SO的答案都暗示了如果第一个参数是公式,则必须将其括起来。我过去了{{ 100*done/total | number_format(2) }},花了我30分钟的时间才弄清楚为什么结果是错误的。你必须写{{ (100*done/total) | number_format(2) }}
Timwi 2014年

1
@Timwi是一种期望,因为您正在将管道输送total到树枝过滤器
Vitalii Zurian

4
@VitaliyZurian:仅当您知道运算符优先级时,才可以使用它。
Timwi'9

1
@Timwi非常感谢,我
遇到

37

枝条扩展库包含大量用于嫩枝有用的扩展。随着版本1.2.0的发布,localizedcurrency筛选器已添加到Intl扩展。顾名思义,此过滤器将根据当前语言环境格式化数字。它使用PHP的NumberFormatter类来这样做。

用法

该过滤器非常易于使用。过滤器唯一需要的参数是3个字母的ISO 4217货币代码。例如,要显示27.99欧元的金额,请使用以下代码行:

{{ price|localizedcurrency('EUR') }}

根据语言环境,这将显示不同的结果:

  • €27.99 如果语言环境设置为 en
  • 27,99 € 如果语言环境设置为 fr
  • € 27,99 如果语言环境设置为 nl

安装/设置语言环境

有关Intl扩展的安装说明,请参见此单独的答案


一个应该如何禁用Thousand Separatorin localizednumber
Pmpr

1
@Trix有趣的问题。这对于PHP来说是可能的NumberFormatter,但是您必须编写一个自定义的Twig扩展,因为localizedcurrency过滤器不支持它。我认为这值得它自己的堆栈溢出问题。如果您发布问题并将链接发送给我,我将在此处发布答案。
Nic Wortel

我认为比number_format方法更好,但两者都可以正常工作
David

我对这种localizedcurrency,localizeddate和localizednumber过滤器感到满意。但是,对于本地化数字,我真的很想定义一个固定的小数位数。目前,我看到的数字使用的是十进制数,这是过滤器最好的方法,但是它并没有显示统一的输出。在同一列中可以有0、1、2、3个小数...在文档中,我无法设法设置一种处理方式。任何想法???@NicWortel
xarlymg89年

找到了!localizednumber很棒,但是format_number(不要与number_format混淆)很棒。这里更多的信息:stackoverflow.com/questions/58662974/...
xarlymg89

11

如果您使用的是较旧版本的twig,并且不想安装任何扩展名,则可以使用如下格式的过滤器:

{{ "%.2f"|format(total) }}

不太好,但是可以。

基本上formatPHP的功能一样工作sprintf


我已经用过了,可以确认它是否有效。您能解释一下它是如何工作的吗?
山姆

2
不用了,我已经解决了。 format类似于PHP的sprintf功能,并且可以进行货币格式化
2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.