web-dev-qa-db-ja.com

twigテンプレートでお金をフォーマットする

twigお金または数字をフォーマットするためのテンプレートエンジンに、そのようなフィルターまたはsthがありますか?

62
umpirsky

_number_format_フィルターは、2011年12月末からTwigコアに含まれています。関連するコミットは here です。

使用法:number_format(decimals, decimalSeparator, thousandSeparator)

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

詳細については docs をご覧ください

100
Jrgns

Twig Extensions library には、Twigの便利な拡張機能が多数含まれています。バージョン1.2.0のリリースでは、 localizedcurrency filter がIntl拡張に追加されました。名前が示すように、このフィルターは現在のロケールに基づいて数値をフォーマットします。これを行うには、PHPの NumberFormatter クラスを使用します。

使用法

このフィルターは非常に使いやすいです。フィルターに必要な引数は、3文字 ISO 4217 通貨コードのみです。たとえば、27.99の金額をユーロで表示するには、次のコード行を使用します。

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

これにより、ロケールに応じて異なる結果が表示されます。

  • €27.99ロケールがenに設定されている場合
  • 27,99 €ロケールがfrに設定されている場合
  • € 27,99ロケールがnlに設定されている場合

インストール/ロケールの設定

Intl拡張機能のインストール手順は この別の回答 にあります。

34
Nic Wortel

古いバージョンのtwigを使用していて、拡張機能をインストールしたくない場合は、次のようなフォーマットフィルターを使用できます。

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

あまりいいとは言えませんが、うまくいきます。

基本的にformatPHPのsprintf関数 のように機能します

11
Jens

number_format()を実行するフィルターは次のとおりです。

https://github.com/falmp/Twig-extensions/blob/master/lib/Twig/Extensions/Extension/Number.php

9
thrashr888