У 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();
}