Quiero convertir el número al formato de moneda en magento2 como hacemos en Magento 1.x con esto
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
¿Cómo hacer lo mismo en Magento2?
Quiero convertir el número al formato de moneda en magento2 como hacemos en Magento 1.x con esto
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
¿Cómo hacer lo mismo en Magento2?
Respuestas:
En magento 2, no hay un módulo 'núcleo'. Puede obtener esto siguiendo el archivo de vista interior (.phtml)
$ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> currency (number_format (50,2), true, false);
currency()
El método utilizará la moneda de alcance actual para convertir.
number_format()
y simplemente pasar la cantidad:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
En primer lugar, no realice el formato de moneda dentro de sus archivos de vista (.phtml), use ayudantes o bloques o una combinación de ambos.
La respuesta aceptada usa una number_format
función que no debería usarse en absoluto, al menos no seguiría ese enfoque.
Puedes intentar usar un modelo:
Modelo de tipo Magento\Directory\Model\Currency
. Funciona format()
ya que es el responsable de los decimales y el formato.
Ejemplo asumiendo variables $model
y $product
se han instanciado:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 lugares decimales para formatear sin $
dólar al lado de la cantidad. Pase vacío array()
si desea agregar la moneda de la tienda a su cantidad.
Magento\Directory\Model\Currency
y por qué debería usarse? ¿Mira la configuración actual de la moneda de la vista de la tienda o la moneda seleccionada por el cliente?
Currency
modelo en el módulo Directorio, es como un ayudante para manipular el valor del precio final. En el ejemplo del asistente del Framework, podrá convertir el precio a la moneda correcta de la tienda, pero no tiene control sobre la precisión de la cantidad y tendrá que extender las clases para personalizarlo. La moneda es lo contrario donde espera la cantidad final, pero le permite personalizar el formato, la precisión decimal, etc.
Lo que desea hacer es inyectar el " PriceCurrencyInterface " en el Bloque del archivo de plantilla en el que desea usar esto.
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (Clase de bloque de la plantilla anterior ... sea lo que sea)
<?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);
}
Esto tiene el beneficio adicional de mostrar el formato correcto según la ubicación actual de la tienda. También ofrece otros métodos que pueden ser útiles, échales un vistazo ...
Asegúrese de verificar la firma del método, ya que puede configurar el resultado que desea mostrar, como el contenedor y la precisión .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
¡Aclamaciones!
Puede obtener esto siguiendo el archivo de vista interior (.phtml).
$ precio = 5.5; $ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> moneda ($ precio, verdadero, falso);
currency($value, $format = true, $includeContainer = true)
$this->
cuando llamo a su sugerencia dentro de una función
Usando el asistente de fijación de precios
<?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);
}
}
Esto genera un símbolo de precio y moneda de un producto determinado.