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 .
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
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:
localizedcurrency
Filter zur Verfügung, mit dem Geld in Twig basierend auf dem Gebietsschema formatiert werden kann. Weitere Informationen finden Sie in meiner Antwort .Antworten:
Der
number_format
Filter ist seit Ende Dezember 2011 im Twig-Kern enthalten. Das entsprechende Commit finden Sie hier .Verwendung:
number_format(decimals, decimalSeparator, thousandSeparator)
Lesen Sie mehr darüber in den Dokumenten
quelle
{{ 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) }}
.total
auf dem Zweig FilterDie 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
localizedcurrency
Filter hinzugefügt. Wie der Name schon sagt, formatiert dieser Filter eine Nummer basierend auf dem aktuellen Gebietsschema. Dazu wird die PHP-NumberFormatter
Klasse 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:
Dies zeigt je nach Gebietsschema unterschiedliche Ergebnisse an:
€27.99
wenn das Gebietsschema auf eingestellt isten
27,99 €
wenn das Gebietsschema auf eingestellt istfr
€ 27,99
wenn das Gebietsschema auf eingestellt istnl
Installation / Festlegen des Gebietsschemas
Installationsanweisungen für die Intl-Erweiterung finden Sie in dieser separaten Antwort .
quelle
Thousand Separator
in deaktivierenlocalizednumber
??NumberFormatter
, aber Sie müssen eine benutzerdefinierte Twig-Erweiterung schreiben, da derlocalizedcurrency
Filter 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.Wenn Sie eine ältere Version von twig verwenden und keine Erweiterungen installieren möchten, können Sie den Formatfilter wie folgt verwenden:
Nicht sehr schön, aber es funktioniert.
Funktioniert grundsätzlich
format
wie diesprintf
Funktion von PHPquelle
format
funktioniert wie die PHP-sprintf
Funktion und kann die Währungsformatierung durchführen .Verwenden Sie die
format_currency
Ab Version 2.12 wurde
format_currency
Filter hinzugefügt. Weitere Informationen finden Sie in der offiziellen Dokumentation unter https://twig.symfony.com/doc/2.x/filters/format_currency.htmlquelle
format_currency
Filter ist ziemlich schlecht, da es üblich ist, Geld als ganze Zahlen zu speichern, und der Filter zeigt die ganze ganze Zahl ...