Eu quero converter o número em formato de moeda no magento2, como fazemos no Magento 1.x com este
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Como fazer o mesmo no Magento2?
Eu quero converter o número em formato de moeda no magento2, como fazemos no Magento 1.x com este
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Como fazer o mesmo no Magento2?
Respostas:
No magento 2, não há módulo 'core'. Você pode obter isso seguindo o caminho dentro do arquivo view (.phtml)
$ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> moeda (number_format (50,2), verdadeiro, falso);
currency()
O método utilizará a moeda do escopo atual para converter.
number_format()
e apenas passar a quantidade:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Antes de tudo, não faça formatação de moeda nos arquivos de exibição (.phtml), use ajudantes ou blocos ou a combinação de ambos.
A resposta aceita usa uma number_format
função que não deve ser usada, pelo menos eu não aceitaria essa abordagem.
Você pode tentar usar um modelo:
Modelo do tipo Magento\Directory\Model\Currency
. Funciona format()
como responsável por casas decimais e formatação.
Exemplo assumindo variáveis $model
e $product
foi instanciado:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 casas decimais para formatação sem $
dólar próximo ao valor. Passe vazio array()
se desejar que a moeda da loja seja anexada ao seu valor.
Magento\Directory\Model\Currency
faz e por que deveria ser usado? Ele analisa a configuração atual da moeda do storeview ou a moeda selecionada pelo cliente?
Currency
modelo no módulo Diretório, é como um auxiliar para manipular o valor final do preço. No exemplo do auxiliar do Framework, você poderá converter o preço na moeda correta da loja, mas não tem controle sobre a precisão do valor e precisará estender as classes para personalizá-lo. A moeda é o oposto onde se espera que o montante final, mas permite que você personalize a formatação, a precisão decimal, etc.
O que você deseja fazer é injetar o " PriceCurrencyInterface " no bloco do arquivo de modelo em que você deseja usá-lo.
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (Classe de bloco do modelo acima ... seja lá o que for)
<?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);
}
Isso tem o benefício adicional de exibir o formato correto com base no código do idioma da loja atual. Também oferece outros métodos que podem ser úteis, confira ...
Verifique a assinatura do método, pois você pode configurar o resultado que deseja exibir, como o contêiner e a precisão .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
Felicidades!
Você pode obtê-lo seguindo o arquivo view (.phtml).
$ preço = 5,5; $ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> moeda ($ preço, verdadeiro, falso);
currency($value, $format = true, $includeContainer = true)
$this->
chamar a sua sugestão dentro de uma função
Usando o ajudante de preços
<?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);
}
}
Isso gera um símbolo de preço e moeda de um determinado produto.