Форматирование денег в шаблонах twig

есть ли какие-либо фильтры или sth, как это в twig template engine для форматирования денег или чисел?

4 ответов


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

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

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

подробнее об этом читайте в разделе docs


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

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

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

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

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

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

установка / настройка локаль

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


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

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

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

в принципе format работы как PHP sprintf функции


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

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