Magento 2: отримати поточний код валюти


22

У Magento 1 ви можете отримати поточний код валюти, виконавши:

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

Мені цікаво, який рекомендований спосіб зробити це в Magento 2. У моєму випадку в блоці.

Відповіді:


31

У блоці

В 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()

1
Як я можу викликати символ валюти за замовчуванням на сторінці phtml у своєму спеціальному модулі?
Пурушотам Шарма

5

Це вимагає натхнення, 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();
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.