Magento 2: obtenga el código de moneda actual

22

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.

Raphael en Digital Pianism
fuente

Respuestas:

31

En un bloque

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.

En cualquier otra clase

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()
Raphael en Digital Pianism
fuente
1
¿Cómo puedo llamar al símbolo de moneda predeterminado en la página phtml en mi módulo personalizado?
Purushotam Sharma
5

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();
}
Andrea
fuente