Chcę przekonwertować liczbę na format walutowy w Magento2, tak jak robimy to w Magento 1.x
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Jak zrobić to samo w Magento2?
Chcę przekonwertować liczbę na format walutowy w Magento2, tak jak robimy to w Magento 1.x
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Jak zrobić to samo w Magento2?
Odpowiedzi:
W Magento 2 nie ma modułu „core”. Możesz to zrobić, postępując w następujący sposób w pliku widoku (.phtml)
$ this-> helper ('Magento \ Framework \ Price \ Helper \ Data') -> currency (format_liczb (50,2), prawda, fałsz);
currency()metoda użyje bieżącej waluty zakresu do przeliczenia.
number_format()i po prostu podać kwotę:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Przede wszystkim nie rób formatowania walut w plikach widoku (.phtml), używaj pomocników lub bloków lub kombinacji obu tych elementów.
Przyjęta odpowiedź korzysta z number_formatfunkcji, której w ogóle nie należy używać, przynajmniej ja nie wybrałbym takiego podejścia.
Możesz spróbować użyć modelu:
Model typu Magento\Directory\Model\Currency. Działa, format()ponieważ odpowiada za miejsca dziesiętne i formatowanie.
Przykład przy założeniu zmiennych $modeli $productich wystąpienia:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
2 miejsca po przecinku do formatowania bez $dolara obok kwoty. Podaj puste, array()jeśli chcesz, aby waluta sklepu była dołączana do kwoty.
Magento\Directory\Model\Currencyi dlaczego warto z niej korzystać? Czy analizuje bieżącą konfigurację waluty w sklepie lub walutę wybraną przez klienta?
Currencymodel w module Directory jest jak pomocnik w manipulowaniu ostateczną wartością ceny. W przykładzie pomocnika z frameworka będziesz w stanie przekonwertować cenę na prawidłową walutę sklepu, ale nie masz kontroli nad dokładnością kwoty i będziesz musiał rozszerzyć klasy, aby ją dostosować. Waluta jest odwrotna, gdy oczekuje ostatecznej kwoty, ale pozwala dostosować formatowanie, precyzję dziesiętną itp.
To, co chcesz zrobić, to wstawić „ PriceCurrencyInterface ” do bloku pliku szablonu, w którym chcesz go użyć.
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (klasa bloku powyższego szablonu ... cokolwiek to może być)
<?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);
}
Ma to dodatkową zaletę wyświetlania poprawnego formatu w oparciu o bieżące ustawienia regionalne sklepu. Oferuje również inne metody, które mogą być pomocne, sprawdź je ...
Sprawdź podpis metody, ponieważ możesz skonfigurować wynik, który chcesz wyświetlić, taki jak kontener i dokładność .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
Twoje zdrowie!
Możesz to zrobić, postępując w następujący sposób w pliku widoku (.phtml).
cena $ = 5,5; $ this-> pomocnik („Magento \ Framework \ Cennik \ Pomocnik \ Dane”) -> waluta ($ cena, prawda, fałsz);
currency($value, $format = true, $includeContainer = true)
$this->wywoływać twoją sugestię wewnątrz funkcji
Korzystanie z pomocnika cenowego
<?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);
}
}
To generuje symbol ceny i waluty z danego produktu.