Ich möchte Zahlen in magento2 in das Währungsformat konvertieren, so wie wir es in Magento 1.x tun
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Wie mache ich das selbe in Magento2?
Ich möchte Zahlen in magento2 in das Währungsformat konvertieren, so wie wir es in Magento 1.x tun
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Wie mache ich das selbe in Magento2?
Antworten:
In Magento 2 gibt es kein Kernmodul. Sie erhalten dies auf folgende Weise in der Ansichtsdatei (.phtml)
$ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> currency (number_format (50,2), true, false);
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.
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
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (Blockklasse der obigen Vorlage ... was auch immer das sein mag)
<?php
namespace \Whatever
use Magento\Framework\Pricing\PriceCurrencyInterface;
use Magento\Framework\View\Element\Template;
class Item extends Template
{
/** @var PriceCurrencyInterface $priceCurrency */
protected $priceCurrency;
public function __construct(
Template\Context $context,
PriceCurrencyInterface $priceCurrency,
array $data = []
) {
parent::__construct($context, $data);
$this->priceCurrency = $priceCurrency;
}
/**
* Function getFormatedPrice
*
* @param float $price
*
* @return string
*/
public function getFormatedPrice($amount)
{
return $this->priceCurrency->convertAndFormat($amount);
}
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!
Sie können dies auf folgende Weise in der Ansichtsdatei (.phtml) abrufen.
$ Preis = 5,5; $ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> currency ($ price, true, false);
currency($value, $format = true, $includeContainer = true)
$this->
wenn ich Ihren Vorschlag innerhalb einer Funktion
Verwendung des Pricing Helper
<?php
namespace \Vendor\Module
class MyClass extends Template
{
public $priceHelper;
public function __construct(
Template\Context $context,
\Magento\Framework\Pricing\Helper\Data $priceHelper,
array $data = []
) {
parent::__construct($context, $data);
$this->priceHelper = $priceHelper;
}
public function myCustomFunction($product) {
return $this->priceHelper->currency($product->getPrice(),true,false);
}
}
Dies gibt ein Preis- und Währungssymbol für ein bestimmtes Produkt aus.