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.
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.
Jawaban:
Dalam Magento 2, Anda dapat menggunakan \Magento\Store\Model\StoreManagerInterface
yang disimpan dalam sebuah variabel dapat diakses $_storeManager
untuk setiap kelas memperluas \Magento\Framework\View\Element\Template
sehingga sebagian besar kelas blok ( Template
, Messages
, Redirect
jenis blok tapi tidak Text
juga 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\StoreManagerInterface
dalam konstruksi Anda karena itu adalah variabel yang dapat diakses dari kelas blok apa pun.
Anda dapat menyuntikkan \Magento\Store\Model\StoreManagerInterface
di 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()
Ini mengambil inspirasi dari Magento\Framework\Pricing\Render\Amount
dan 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();
}