格式化树枝模板中的钱

ump*_*sky 63 format numbers currency twig

在树枝模板引擎中是否有任何过滤器或类似的格式化金钱或数字?

Jrg*_*gns 103

number_format过滤器已被列入2011年以来十二月底的相关承诺是树枝的核心位置.

用法: number_format(decimals, decimalSeparator, thousandSeparator)

{{ total|number_format(2) }}
{{ total|number_format(0, '.') }}
{{ total|number_format(2, '.', ',') }}
Run Code Online (Sandbox Code Playgroud)

文档中阅读更多相关信息

  • 令人惊讶的是,没有任何文档和SO答案都没有暗示如果它是一个公式,你必须将第一个参数括起来.我有`{{100*done/total | number_format(2)}}`我花了30分钟才弄明白为什么结果是错的.你必须写`{{(100*done/total)| number_format(2)}}`. (9认同)
  • 有没有办法对这个用户区域设置敏感? (3认同)
  • @VitaliyZurian:只有在知道运算符优先级时才会出现这种情况. (3认同)

Nic*_*tel 35

枝条扩展库包含大量用于嫩枝有用的扩展.随着1.2.0版的发布,Intl扩展中添加了一个localizedcurrency过滤器.顾名思义,此过滤器将根据当前区域设置格式化数字.它使用PHP的NumberFormatter类来实现.

用法

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

{{ price|localizedcurrency('EUR') }}
Run Code Online (Sandbox Code Playgroud)

这将根据区域设置显示不同的结果:

  • €27.99 如果区域设置设置为 en
  • 27,99 € 如果区域设置设置为 fr
  • € 27,99 如果区域设置设置为 nl

安装/设置区域设置

Intl扩展的安装说明可以在这个单独的答案中找到.


Jen*_*ens 11

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

{{ "%.2f"|format(total) }}
Run Code Online (Sandbox Code Playgroud)

不是很好,但它的工作原理.

基本上formatPHP的sprintf功能一样

  • 没有必要,我已经解决了.`format`就像PHP的'sprintf`函数和[可以进行货币格式化](http://php.net/sprintf#example-4997). (2认同)