Bu şekilde Magento 1.x'te yaptığımız gibi sayıyı magento2'de para birimi biçimine dönüştürmek istiyorum
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Magento2 de nasıl yapılır?
Bu şekilde Magento 1.x'te yaptığımız gibi sayıyı magento2'de para birimi biçimine dönüştürmek istiyorum
$_coreHelper = $this->helper('core');
$_coreHelper->currency(number_format(50,2),true,false)
Magento2 de nasıl yapılır?
Yanıtlar:
Magento 2'de 'çekirdek' modül yoktur. Bunu, görüntüleme dosyasının (.phtml) içinde aşağıdaki yolu izleyerek alabilirsiniz
$ This-> yardımcısı ( 'Magento \ Framework \ Fiyatlandırma \ Yardımcısı \ Data') -> para (number_format (50,2), doğru, yanlış);
currency()
yöntemi dönüştürmek için geçerli kapsam para birimini kullanacaktır.
number_format()
ve miktarı geçmeniz gerekir :$this->helper('Magento\Framework\Pricing\Helper\Data')->currency(50),true,false);
currency($value, $format = true, $includeContainer = true)
Her şeyden önce, görünüm (.phtml) dosyalarınızda para birimi biçimlendirmesi yapmayın, yardımcıları veya blokları veya her ikisinin kombinasyonunu kullanın.
Kabul edilen cevap number_format
hiç kullanılmaması gereken fonksiyonu kullanır , en azından ben bu yaklaşımı benimsemem.
Bir model kullanmayı deneyebilirsiniz:
Tip modeli Magento\Directory\Model\Currency
. format()
Ondalık basamaklardan ve biçimlendirmeden sorumlu olan işlevini yerine getirin.
Değişkenleri varsaydığı $model
ve $product
somutlaştırıldığı örnek:
$model->format($product->getPrice(), array('symbol' => ''), false, false)
$
Miktarın yanında dolar olmadan biçimlendirme için 2 ondalık basamak . Tutarınıza array()
mağaza para birimi eklenmesini istiyorsanız boş geçin.
Magento\Directory\Model\Currency
işe yarıyor ve neden kullanılmalı? Geçerli mağaza görüntüleme para birimi yapılandırmasına mı yoksa müşteri tarafından seçilen para birimine mi bakar?
Currency
Dizin modülünde model gördüğüm şekilde son fiyat değerini değiştirmek için bir yardımcı gibidir. Framework'ün yardımcısı örneğinde, fiyatı mağazanın doğru para birimine dönüştürebilirsiniz, ancak tutarın kesinliği üzerinde hiçbir kontrole sahip olmazsınız ve özelleştirmek için sınıfları genişletmeniz gerekir. Para Birimi, son tutarı beklediği zıttır, ancak biçimlendirme, ondalık kesinlik vb. Özelleştirmenizi sağlar.
Bunu yapmak istediğiniz şablon dosyasının bloğuna " PriceCurrencyInterface " enjekte etmek istersiniz .
template.phtml
<div><?= $block->getFormatedPrice('342.4345') ?>
Item.php (Yukarıdaki şablonun Block Class ... ne olursa olsun)
<?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);
}
Bu, geçerli mağaza yerel ayarına bağlı olarak doğru biçimi görüntüleme avantajına sahiptir. Ayrıca, yardımcı olabilecek başka yöntemler de sunar, kontrol edin ...
Kapsayıcı ve kesinlik gibi görüntülemek istediğiniz sonucu yapılandırabileceğiniz için yöntem imzasını kontrol ettiğinizden emin olun .
priceCurrency->convertAndFormat($amount, $includeContainer, $precision)
Şerefe!
Bunu, görüntüleme dosyasının (.phtml) içinde aşağıdaki yolu izleyerek alabilirsiniz.
$ fiyat = 5.5; $ This-> yardımcısı ( 'Magento \ Framework \ Fiyatlandırma \ Yardımcısı \ Data') -> para ($ fiyat, doğru, yanlış);
currency($value, $format = true, $includeContainer = true)
$this->
gerektiğinden, öneriyi bir işlev içinde çağırdığımda yerine ne kullanabilirim
Fiyatlandırma yardımcısını kullanma
<?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);
}
}
Bu, belirli bir üründen fiyat ve para birimi simgesi çıkarır.