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();
}
Andrea
источник