Я хочу конвертировать число в формат валюты в magento2, как мы делаем в Magento 1.x с этим
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Как сделать то же самое в Magento2?
Я хочу конвертировать число в формат валюты в magento2, как мы делаем в Magento 1.x с этим
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Как сделать то же самое в Magento2?
Ответы:
В magento 2 нет модуля «core». Вы можете получить это следующим образом в файле представления (.phtml)
$ This-> помощник ( 'Magento \ Framework \ Цены \ Helper \ Data') -> валюта (number_format (50,2), правда, ложь);
currency()
Метод будет использовать текущую область видимости для конвертации.
number_format()
и просто передать сумму:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Прежде всего, не делайте форматирование валюты внутри ваших файлов представления (.phtml), используйте помощники или блоки или комбинацию обоих.
В принятом ответе используется number_format
функция, которая вообще не должна использоваться, по крайней мере, я бы не стал использовать этот подход.
Вы можете попробовать использовать модель:
Модель типа Magento\Directory\Model\Currency
. Функция format()
отвечает за десятичные разряды и форматирование.
Пример, предполагающий переменные $model
и $product
был создан:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 знака после запятой для форматирования без $
доллара рядом с суммой. Пустой пропуск, array()
если вы хотите, чтобы валюта магазина добавлялась к вашей сумме.
Magento\Directory\Model\Currency
делать и зачем его использовать? Это смотрит на текущую конфигурацию валюты просмотра магазина или валюту, выбранную клиентом?
Currency
модель в модуле Directory - это помощник для манипулирования окончательным значением цены. В примере с помощником из Framework вы сможете конвертировать цену в правильную валюту магазина, но у вас нет контроля над точностью суммы, и вам придется расширять классы, чтобы настроить ее. Валюта противоположна, где она ожидает окончательную сумму, но позволяет настраивать форматирование, десятичную точность и т. Д.
То, что вы хотите сделать, это вставить « PriceCurrencyInterface » в блок файла шаблона, в котором вы хотите использовать это.
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (блочный класс вышеупомянутого шаблона ... что бы это ни было)
<?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);
}
Это дает дополнительное преимущество отображения правильного формата в зависимости от текущей локали магазина. Он также предлагает другие методы, которые могут быть полезны, проверьте их ...
Обязательно проверьте сигнатуру метода, поскольку вы можете настроить результат, который вы хотите отобразить, например, контейнер и точность .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
Ура!
Вы можете получить это следующим образом в файле представления (.phtml).
цена $ = 5,5; $ This-> помощник ( 'Magento \ Framework \ Цены \ Helper \ Data') -> валюта ($ цена, правда, ложь);
currency($value, $format = true, $includeContainer = true)
$this->
вызова вашего предложения внутри функции
Использование помощника по ценообразованию
<?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);
}
}
Это выводит цену и символ валюты из данного продукта.