En Magento 1, puede recuperar el código de moneda actual haciendo lo siguiente:
Mage::app()->getStore()->getCurrentCurrencyCode()
Me pregunto cuál es la forma recomendada de hacerlo en Magento 2. En mi caso en un bloque.
En Magento 1, puede recuperar el código de moneda actual haciendo lo siguiente:
Mage::app()->getStore()->getCurrentCurrencyCode()
Me pregunto cuál es la forma recomendada de hacerlo en Magento 2. En mi caso en un bloque.
Respuestas:
En Magento 2, se puede utilizar el \Magento\Store\Model\StoreManagerInterface
que se almacena en una variable accesible $_storeManager
para todas las clases que se extiende \Magento\Framework\View\Element\Template
de modo mayoría de las clases de bloques ( Template
, Messages
, Redirect
tipos de bloques, pero no Text
tampoco TextList
).
De esta manera, en su bloque, puede escribir directamente el siguiente código para obtener el código de moneda actual:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
No es necesario inyectar \Magento\Store\Model\StoreManagerInterface
en su construcción, ya que es una variable accesible desde cualquier clase de bloque.
Puede inyectar el \Magento\Store\Model\StoreManagerInterface
en su constructor:
protected $_storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Luego llame a la misma función que el bloque:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Esto se inspira Magento\Framework\Pricing\Render\Amount
y funciona bien en mi caso (comportándose como 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();
}
También puede obtener el símbolo de moneda:
/**
* Get current currency symbol
*
* @return string
*/
public function getCurrentCurrencySymbol()
{
return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}