Was ist, wenn Sie nur ein Währungssymbol für den Preis wünschen? currency()Die Methode verwendet die aktuelle Bereichswährung für die Konvertierung.
MagePsycho
1
Dies funktioniert nicht bei Preisen über 1000. Das number_format fügt Tausendertrennzeichen hinzu, was bei europäischen Systemen, bei denen ein Punkt ein Tausendertrennzeichen ist, zu Problemen führt. Zum Beispiel ein Preis von EUR 12000 ergibt € 12,00, was falsch ist. Dann müssen Sie die entfernen number_format()und einfach den Betrag übergeben:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
Jacques
Dies ist sicherlich nicht die beste Antwort, obwohl sie als höchste und akzeptierte Antwort eingestuft wird. Besser geeignet ist die Antwort von dchayka
Akif
Für diejenigen, die sich fragen, ist die Signaturcurrency($value, $format = true, $includeContainer = true)
Collin Anderson
16
Führen Sie zunächst keine Währungsformatierungen in Ihren Ansichtsdateien (.phtml) durch, verwenden Sie Helfer oder Blöcke oder eine Kombination aus beiden.
Die akzeptierte Antwort verwendet eine number_formatFunktion, die überhaupt nicht verwendet werden sollte, zumindest würde ich nicht mit diesem Ansatz gehen.
Sie können versuchen, ein Modell zu verwenden:
Modell des Typs Magento\Directory\Model\Currency. Funktioniert so, format()wie es für die Nachkommastellen und die Formatierung verantwortlich ist.
Beispiel unter der Annahme von Variablen $modelund $productwurden instanziiert:
2 Nachkommastellen für die Formatierung ohne $Dollar neben dem Betrag. Übergeben Sie leer, array()wenn Sie möchten, dass die Ladenwährung an Ihren Betrag angehängt wird.
Ein weiterer Vorteil dieser Methode ist die Arbeit mit Werten über 1000 US-Dollar. Bei den anderen Antworten wird dieses Zahlenformat nicht berücksichtigt, und am Frontend werden die falschen Preise angezeigt. Ich wünschte, ich könnte Ihnen 1.000 Stimmen geben
circlesix
1
@ Circlesix vielen Dank, sehr geschätzt.
dchayka
Also, was macht Magento\Directory\Model\Currencyund warum sollte es verwendet werden? Betrachtet es die aktuelle Konfiguration der Storeview-Währung oder die vom Kunden ausgewählte Währung?
Erfan
1
@Erfan, so wie ich es Currencyim Directory-Modul sehe, ist wie ein Helfer, um den endgültigen Preiswert zu manipulieren. Im Beispiel des Helfers aus dem Framework können Sie den Preis in die richtige Währung des Geschäfts umwandeln, haben jedoch keine Kontrolle über die Genauigkeit des Betrags und müssen die Klassen erweitern, um ihn anzupassen. Die Währung ist das Gegenteil, wo es den endgültigen Betrag erwartet, aber Sie können Formatierung, Dezimalgenauigkeit usw.
anpassen
13
Sie möchten das " PriceCurrencyInterface " in den Block der Vorlagendatei einfügen, in der Sie dies verwenden möchten.
template.phtml
<div><?= $block->getFormatedPrice('342.4345')?>
Item.php (Blockklasse der obigen Vorlage ... was auch immer das sein mag)
Dies hat den zusätzlichen Vorteil, dass das richtige Format basierend auf dem aktuellen Gebietsschema des Geschäfts angezeigt wird. Es bietet auch andere Methoden, die hilfreich sein könnten, überprüfen Sie sie aus ...
Stellen Sie sicher, dass Sie die Methodensignatur überprüfen, da Sie das anzuzeigende Ergebnis konfigurieren können, z. B. den Container und die Genauigkeit .
Dies ist der schnellste Weg, wenn Sie kein separates Modul erstellen möchten, nur um das currencyInterface in die Template-Klasse von Magento zu implementieren.
Daan van den Bergh
Da ich den gleichen Formatierer an mehreren Stellen im HTML-Code verwenden muss, was kann ich anstelle dessen verwenden, $this->wenn ich Ihren Vorschlag innerhalb einer Funktion
Antworten:
In Magento 2 gibt es kein Kernmodul. Sie erhalten dies auf folgende Weise in der Ansichtsdatei (.phtml)
quelle
currency()
Die Methode verwendet die aktuelle Bereichswährung für die Konvertierung.number_format()
und einfach den Betrag übergeben:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Führen Sie zunächst keine Währungsformatierungen in Ihren Ansichtsdateien (.phtml) durch, verwenden Sie Helfer oder Blöcke oder eine Kombination aus beiden.
Die akzeptierte Antwort verwendet eine
number_format
Funktion, die überhaupt nicht verwendet werden sollte, zumindest würde ich nicht mit diesem Ansatz gehen.Sie können versuchen, ein Modell zu verwenden:
Modell des Typs
Magento\Directory\Model\Currency
. Funktioniert so,format()
wie es für die Nachkommastellen und die Formatierung verantwortlich ist.Beispiel unter der Annahme von Variablen
$model
und$product
wurden instanziiert:$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 Nachkommastellen für die Formatierung ohne
$
Dollar neben dem Betrag. Übergeben Sie leer,array()
wenn Sie möchten, dass die Ladenwährung an Ihren Betrag angehängt wird.quelle
Magento\Directory\Model\Currency
und warum sollte es verwendet werden? Betrachtet es die aktuelle Konfiguration der Storeview-Währung oder die vom Kunden ausgewählte Währung?Currency
im Directory-Modul sehe, ist wie ein Helfer, um den endgültigen Preiswert zu manipulieren. Im Beispiel des Helfers aus dem Framework können Sie den Preis in die richtige Währung des Geschäfts umwandeln, haben jedoch keine Kontrolle über die Genauigkeit des Betrags und müssen die Klassen erweitern, um ihn anzupassen. Die Währung ist das Gegenteil, wo es den endgültigen Betrag erwartet, aber Sie können Formatierung, Dezimalgenauigkeit usw.Sie möchten das " PriceCurrencyInterface " in den Block der Vorlagendatei einfügen, in der Sie dies verwenden möchten.
template.phtml
Item.php (Blockklasse der obigen Vorlage ... was auch immer das sein mag)
Dies hat den zusätzlichen Vorteil, dass das richtige Format basierend auf dem aktuellen Gebietsschema des Geschäfts angezeigt wird. Es bietet auch andere Methoden, die hilfreich sein könnten, überprüfen Sie sie aus ...
Stellen Sie sicher, dass Sie die Methodensignatur überprüfen, da Sie das anzuzeigende Ergebnis konfigurieren können, z. B. den Container und die Genauigkeit .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
Prost!
quelle
Sie können dies auf folgende Weise in der Ansichtsdatei (.phtml) abrufen.
quelle
currency($value, $format = true, $includeContainer = true)
$this->
wenn ich Ihren Vorschlag innerhalb einer FunktionVerwendung des Pricing Helper
Dies gibt ein Preis- und Währungssymbol für ein bestimmtes Produkt aus.
quelle