Co jeśli chcesz tylko symbol waluty do ceny? currency()metoda użyje bieżącej waluty zakresu do przeliczenia.
MagePsycho
1
Nie działa to w przypadku cen powyżej 1000. Format_ liczbowy dodaje tysiące separatorów, co powoduje problemy w systemach europejskich, w których punkt jest separatorem tysiąca. Na przykład cena 12000 EUR zwraca 12,00 EUR, co jest błędne. Następnie musisz usunąć number_format()i po prostu podać kwotę:$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
Jacques
Z pewnością nie jest to najlepsza odpowiedź, mimo że jest uznana za najwyższą i zaakceptowaną. Lepsze podejście to odpowiedź dchayki
Akif
Dla tych, którzy zastanawiają się, podpis jestcurrency($value, $format = true, $includeContainer = true)
Collin Anderson
16
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:
Kolejną zaletą korzystania z tej metody jest praca z wartościami przekraczającymi 1000 USD. Inne odpowiedzi nie biorą pod uwagę tego formatu liczb, a na końcu pojawiają się nieprawidłowe ceny. Żałuję, że nie mogę oddać Ci 1000 głosów
kręgi
1
@circlesix dziękuję bardzo, bardzo ceniony.
dchayka
Co więc robi Magento\Directory\Model\Currencyi dlaczego warto z niej korzystać? Czy analizuje bieżącą konfigurację waluty w sklepie lub walutę wybraną przez klienta?
Erfan
1
@Erfan w moim odczuciu 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.
dchayka
13
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ć)
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ść .
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)
źródło
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_format
funkcji, 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
$model
i$product
ich 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.źródło
Magento\Directory\Model\Currency
i dlaczego warto z niej korzystać? Czy analizuje bieżącą konfigurację waluty w sklepie lub walutę wybraną przez klienta?Currency
model 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
Item.php (klasa bloku powyższego szablonu ... cokolwiek to może być)
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!
źródło
Możesz to zrobić, postępując w następujący sposób w pliku widoku (.phtml).
źródło
currency($value, $format = true, $includeContainer = true)
$this->
wywoływać twoją sugestię wewnątrz funkcjiKorzystanie z pomocnika cenowego
To generuje symbol ceny i waluty z danego produktu.
źródło