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\StoreManagerInterfaceque se almacena en una variable accesible $_storeManagerpara todas las clases que se extiende \Magento\Framework\View\Element\Templatede modo mayoría de las clases de bloques ( Template, Messages, Redirecttipos de bloques, pero no Texttampoco 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\StoreManagerInterfaceen su construcción, ya que es una variable accesible desde cualquier clase de bloque.
Puede inyectar el \Magento\Store\Model\StoreManagerInterfaceen 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\Amounty 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();
}