Geld in Zweigvorlagen formatieren


69

Gibt es Filter oder ähnliches in der Zweigvorlagen-Engine, um Geld oder Zahlen zu formatieren?


2
Seit der Veröffentlichung von Twig Extensions 1.2.0 im Oktober 2014 steht ein localizedcurrencyFilter zur Verfügung, mit dem Geld in Twig basierend auf dem Gebietsschema formatiert werden kann. Weitere Informationen finden Sie in meiner Antwort .
Nic Wortel

Antworten:


114

Der number_formatFilter ist seit Ende Dezember 2011 im Twig-Kern enthalten. Das entsprechende Commit finden Sie hier .

Verwendung: number_format(decimals, decimalSeparator, thousandSeparator)

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

Lesen Sie mehr darüber in den Dokumenten


3
Gibt es keine Möglichkeit, dieses Benutzergebietsschema sensibel zu machen?
Fnagel

10
Erstaunlicherweise deuten keine der Dokumentationen und keine der SO-Antworten darauf hin, dass Sie das erste Argument in Klammern setzen müssen, wenn es sich um eine Formel handelt. Ich hatte {{ 100*done/total | number_format(2) }}und es dauerte gut 30 Minuten, um herauszufinden, warum das Ergebnis falsch war. Du musst schreiben {{ (100*done/total) | number_format(2) }}.
Timwi

1
@Timwi , die Art ist zu erwarten , da Sie die sind Rohrleitungen totalauf dem Zweig Filter
Vitalii Zurian

4
@VitaliyZurian: Es wird nur erwartet, wenn Sie die Priorität des Operators kennen.
Timwi

1
@ Timwi vielen Dank, ich hatte das gleiche Problem
TSGames

37

Die Twig Extensions-Bibliothek enthält eine Reihe nützlicher Erweiterungen für Twig. Mit der Veröffentlichung von Version 1.2.0 wurde der Intl-Erweiterung ein localizedcurrencyFilter hinzugefügt. Wie der Name schon sagt, formatiert dieser Filter eine Nummer basierend auf dem aktuellen Gebietsschema. Dazu wird die PHP- NumberFormatterKlasse verwendet.

Verwendung

Dieser Filter ist sehr einfach zu bedienen. Das einzige erforderliche Argument für den Filter ist der dreistellige Währungscode ISO 4217 . Verwenden Sie beispielsweise die folgende Codezeile, um einen Betrag von 27,99 Euro anzuzeigen:

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

Dies zeigt je nach Gebietsschema unterschiedliche Ergebnisse an:

  • €27.99 wenn das Gebietsschema auf eingestellt ist en
  • 27,99 € wenn das Gebietsschema auf eingestellt ist fr
  • € 27,99 wenn das Gebietsschema auf eingestellt ist nl

Installation / Festlegen des Gebietsschemas

Installationsanweisungen für die Intl-Erweiterung finden Sie in dieser separaten Antwort .


Wie soll man das Thousand Separatorin deaktivieren localizednumber??
Pmpr

1
@Trix interessante Frage. Dies ist mit PHPs möglich NumberFormatter, aber Sie müssen eine benutzerdefinierte Twig-Erweiterung schreiben, da der localizedcurrencyFilter dies nicht unterstützt. Ich denke, dies verdient jedoch eine eigene Frage zum Stapelüberlauf. Wenn Sie die Frage posten und mir den Link senden, werde ich dort meine Antwort posten.
Nic Wortel

Mehr gut als number_format Methode denke ich, aber beide funktionieren gut
David

Ich bin begeistert von diesen Filtern für lokalisierte Währung, lokalisiertes Datum und lokalisierte Nummer. Im Fall der lokalisierten Nummer würde ich jedoch gerne eine feste Anzahl von Dezimalstellen definieren. Im Moment sehe ich die Zahlen mit einer Anzahl von Dezimalstellen, die am besten vom Filter erreicht werden, aber keine einheitliche Ausgabe anzeigen. In derselben Spalte können 0, 1, 2, 3 Dezimalstellen stehen ... In der Dokumentation kann ich keinen Weg finden, wie ich damit umgehen soll. Irgendeine Idee??? @NicWortel
xarlymg89

Fand es! localizednumber ist großartig, aber format_number (nicht mit number_format verwechseln) ist großartig. Weitere Informationen hier: stackoverflow.com/questions/58662974/…
xarlymg89

11

Wenn Sie eine ältere Version von twig verwenden und keine Erweiterungen installieren möchten, können Sie den Formatfilter wie folgt verwenden:

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

Nicht sehr schön, aber es funktioniert.

Funktioniert grundsätzlich formatwie die sprintfFunktion von PHP


Ich habe dies verwendet und kann bestätigen, dass es funktioniert. Können Sie erklären, wie es funktioniert?
Sam

2
Keine Notwendigkeit, ich habe es ausgearbeitet. formatfunktioniert wie die PHP- sprintfFunktion und kann die Währungsformatierung durchführen .
Sam

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.