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.
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.
Respostas:
No Magento 2, você pode usar o \Magento\Store\Model\StoreManagerInterface
que está armazenado em uma variável acessível $_storeManager
para todas as classes que se estendem \Magento\Framework\View\Element\Template
para a maioria das classes de blocos ( Template
, tipos de bloco Messages
, Redirect
mas não Text
nem 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\StoreManagerInterface
em sua construção, pois é uma variável acessível a partir de qualquer classe de bloco.
Você pode injetar o \Magento\Store\Model\StoreManagerInterface
em 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()
Isso se inspira Magento\Framework\Pricing\Render\Amount
e 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();
}