Я хочу перетворити число у формат валюти в 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 немає "ядрового" модуля. Ви можете отримати це наступним чином всередині файлу перегляду (.phtml)
$ this-> helper ('Magento \ Framework \ Pricing \ Helper \ Data') -> валюта (number_format (50,2), true, false);
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
модель у модулі Каталог - це як помічник для маніпулювання кінцевою ціновою вартістю. На прикладі помічника від 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-> helper ('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);
}
}
Це виводить символ ціни та валюти для даного товару.