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.