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 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):Você também pode obter o símbolo da moeda:
fonte