Magento 2: dapatkan kode mata uang saat ini

22

Di Magento 1, Anda dapat mengambil kode mata uang saat ini dengan melakukan:

Mage::app()->getStore()->getCurrentCurrencyCode()

Saya bertanya-tanya apa cara yang disarankan untuk melakukannya di Magento 2. Dalam kasus saya di blok.

Raphael di Digital Pianism
sumber

Jawaban:

31

Dalam satu blok

Dalam Magento 2, Anda dapat menggunakan \Magento\Store\Model\StoreManagerInterfaceyang disimpan dalam sebuah variabel dapat diakses $_storeManageruntuk setiap kelas memperluas \Magento\Framework\View\Element\Templatesehingga sebagian besar kelas blok ( Template, Messages, Redirectjenis blok tapi tidak Textjuga TextList).

Dengan cara ini di blok Anda, Anda bisa langsung mengetik kode berikut untuk mendapatkan kode mata uang saat ini:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()

Tidak perlu menyuntikkan \Magento\Store\Model\StoreManagerInterfacedalam konstruksi Anda karena itu adalah variabel yang dapat diakses dari kelas blok apa pun.

Di kelas lain

Anda dapat menyuntikkan \Magento\Store\Model\StoreManagerInterfacedi konstruktor Anda:

protected $_storeManager;

public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
    $this->_storeManager = $storeManager;
}

Kemudian panggil fungsi yang sama dengan blok:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Raphael di Digital Pianism
sumber
1
Bagaimana saya bisa memanggil simbol mata uang default di halaman phtml di modul khusus saya?
Purushotam Sharma
5

Ini mengambil inspirasi dari Magento\Framework\Pricing\Render\Amountdan berfungsi dengan baik dalam kasus saya (berperilaku seperti Magento):

protected $_priceCurrency;

public function __construct(
  ...
  \Magento\Framework\Pricing\PriceCurrencyInterface $priceCurrency,
  ...
)
{           
  $this->_priceCurrency = $priceCurrency;
  ...
}

/**
 * Get current currency code
 *
 * @return string
 */ 
public function getCurrentCurrencyCode()
{
  return $this->_priceCurrency->getCurrency()->getCurrencyCode();
}

Anda juga bisa mendapatkan simbol mata uang:

/**
 * Get current currency symbol
 *
 * @return string
 */ 
public function getCurrentCurrencySymbol()
{
  return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}
Andrea
sumber