Voglio convertire il numero in formato valuta in magento2 come facciamo in Magento 1.x con questo
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Come fare lo stesso in Magento2?
Voglio convertire il numero in formato valuta in magento2 come facciamo in Magento 1.x con questo
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Come fare lo stesso in Magento2?
Risposte:
In magento 2, non ci sono moduli 'core'. È possibile ottenere questo seguendo il modo all'interno del file di visualizzazione (.phtml)
$ This-> helper ( 'Magento \ Framework \ Pricing \ Helper \ Data') -> valuta (number_format (50,2), true, false);
currency()
il metodo utilizzerà la valuta dell'ambito corrente per la conversione.
number_format()
e basta passare l'importo:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Prima di tutto non eseguire la formattazione della valuta all'interno dei file di visualizzazione (.phtml), utilizzare helper o blocchi o una combinazione di entrambi.
La risposta accettata utilizza una number_format
funzione che non dovrebbe essere utilizzata affatto, almeno non seguirei questo approccio.
Puoi provare a usare un modello:
Modello di tipo Magento\Directory\Model\Currency
. Funziona format()
in quanto responsabile di posizioni decimali e formattazione.
Esempio assumendo variabili $model
e $product
sono state istanziate:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 cifre decimali per la formattazione senza $
dollaro accanto all'importo. Passa vuoto array()
se desideri aggiungere la valuta del negozio al tuo importo.
Magento\Directory\Model\Currency
e perché dovrebbe essere usato? Analizza l'attuale configurazione della valuta di visualizzazione dello store o la valuta selezionata dal cliente?
Currency
modello nel modulo Directory è come un aiuto per manipolare il valore del prezzo finale. Nell'esempio dell'assistente del Framework sarai in grado di convertire il prezzo nella valuta corretta del negozio, ma non avrai alcun controllo sulla precisione dell'importo e dovrai estendere le classi per personalizzarlo. La valuta è l'opposto di quanto prevede l'importo finale ma ti consente di personalizzare la formattazione, la precisione decimale, ecc.
Quello che vuoi fare è iniettare " PriceCurrencyInterface " nel blocco del file modello in cui desideri utilizzarlo.
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (Block Class del modello sopra ... qualunque esso sia)
<?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);
}
Ciò ha l'ulteriore vantaggio di visualizzare il formato corretto in base alle impostazioni internazionali correnti del negozio. Offre anche altri metodi che potrebbero essere utili, dai un'occhiata a ...
Assicurati di controllare la firma del metodo poiché puoi configurare il risultato che desideri visualizzare come il contenitore e la precisione .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
Saluti!
È possibile ottenere questo seguendo il modo all'interno del file di visualizzazione (.phtml).
$ prezzo = 5,5; $ This-> helper ( 'Magento \ Framework \ Pricing \ Helper \ Data') -> valuta ($ prezzo, vero, falso);
currency($value, $format = true, $includeContainer = true)
$this->
quando chiamo il tuo suggerimento all'interno di una funzione
Utilizzando l'helper dei prezzi
<?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);
}
}
Ciò genera un simbolo di prezzo e valuta da un determinato prodotto.