Форматирование денег в шаблонах веток - PullRequest
61 голосов
/ 07 мая 2011

Есть ли какие-нибудь фильтры или что-то подобное в шаблонном движке для форматирования денег или чисел?

Ответы [ 4 ]

99 голосов
/ 01 февраля 2012

Фильтр number_format включен в ядро ​​Twig с конца декабря 2011 года. Соответствующий коммит здесь .

Использование: number_format(decimals, decimalSeparator, thousandSeparator)

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

Подробнее об этом можно прочитать в документах

34 голосов
/ 09 февраля 2015

Библиотека Twig Extensions содержит ряд полезных расширений для Twig. С выпуском версии 1.2.0 к расширению Intl добавлен фильтр localizedcurrency . Как следует из названия, этот фильтр будет форматировать число на основе текущей локали. Для этого он использует класс PHP NumberFormatter.

Использование

Этот фильтр очень прост в использовании. Единственным обязательным аргументом для фильтра является трехбуквенный ISO 4217 код валюты. Например, чтобы отобразить сумму в 27,99 евро, используйте следующую строку кода:

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

В зависимости от локали будут отображаться разные результаты:

  • €27.99 если языковой стандарт установлен на en
  • 27,99 € если языковой стандарт установлен на fr
  • € 27,99 если языковой стандарт установлен на nl

Установка / настройка языка

Инструкции по установке для расширения Intl можно найти в этом отдельном ответе .

11 голосов
/ 30 июня 2012

Если вы используете более старую версию twig и не хотите устанавливать какие-либо расширения, вы можете использовать фильтр форматирования следующим образом:

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

Не очень хорошо, но это работает.

В основном format работает как PHP * функция sprintf

9 голосов
/ 28 июля 2011

Вот фильтр, который делает number_format():

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

...