У Magento 1 ви можете отримати поточний код валюти, виконавши:
Mage::app()->getStore()->getCurrentCurrencyCode()
Мені цікаво, який рекомендований спосіб зробити це в Magento 2. У моєму випадку в блоці.
У Magento 1 ви можете отримати поточний код валюти, виконавши:
Mage::app()->getStore()->getCurrentCurrencyCode()
Мені цікаво, який рекомендований спосіб зробити це в Magento 2. У моєму випадку в блоці.
Відповіді:
В Magento 2, ви можете використовувати , \Magento\Store\Model\StoreManagerInterface
який зберігається в доступному змінному $_storeManager
для кожного класу , що тягнеться \Magento\Framework\View\Element\Template
тому більшість класів блоків ( Template
, Messages
, Redirect
типівблоків , але не Text
ні TextList
).
Таким чином у своєму блоці ви можете безпосередньо ввести наступний код, щоб отримати поточний код валюти:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Не потрібно вводити \Magento\Store\Model\StoreManagerInterface
в свою конструкцію, оскільки це змінна, доступна з будь-якого класу блоків.
Ви можете ввести \Magento\Store\Model\StoreManagerInterface
в свій конструктор:
protected $_storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Потім викликайте ту ж функцію, що і блок:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Це вимагає натхнення, Magento\Framework\Pricing\Render\Amount
і це добре працює в моєму випадку (поводиться як 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();
}
Також ви можете отримати символ валюти:
/**
* Get current currency symbol
*
* @return string
*/
public function getCurrentCurrencySymbol()
{
return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}