Magento 2: obtenha o código da moeda atual

22

No Magento 1, você pode recuperar o código da moeda atual fazendo:

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

Gostaria de saber qual é a maneira recomendada de fazê-lo no Magento 2. No meu caso, em um bloco.

Raphael na Digital Pianism
fonte

Respostas:

31

Em um bloco

No Magento 2, você pode usar o \Magento\Store\Model\StoreManagerInterfaceque está armazenado em uma variável acessível $_storeManagerpara todas as classes que se estendem \Magento\Framework\View\Element\Templatepara a maioria das classes de blocos ( Template, tipos de bloco Messages, Redirectmas não Textnem nor TextList).

Dessa forma, no seu bloco, você pode digitar diretamente o seguinte código para obter o código da moeda atual:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()

Não é necessário injetar o \Magento\Store\Model\StoreManagerInterfaceem sua construção, pois é uma variável acessível a partir de qualquer classe de bloco.

Em qualquer outra classe

Você pode injetar o \Magento\Store\Model\StoreManagerInterfaceem seu construtor:

protected $_storeManager;

public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
    $this->_storeManager = $storeManager;
}

Em seguida, chame a mesma função que o bloco:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Raphael na Digital Pianism
fonte
1
Como posso chamar o símbolo da moeda padrão na página phtml no meu módulo personalizado?
Purushotam Sharma
5

Isso se inspira Magento\Framework\Pricing\Render\Amounte está funcionando bem no meu caso (se comportando como o 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();
}

Você também pode obter o símbolo da moeda:

/**
 * Get current currency symbol
 *
 * @return string
 */ 
public function getCurrentCurrencySymbol()
{
  return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}
Andrea
fonte