Magento 2: obtenez le code de devise actuel

22

Dans Magento 1, vous pouvez récupérer le code de devise actuel en procédant comme suit:

Mage::app()->getStore()->getCurrentCurrencyCode()

Je me demande quelle est la méthode recommandée pour le faire dans Magento 2. Dans mon cas, dans un bloc.

Raphael chez Digital Pianism
la source

Réponses:

31

Dans un bloc

Magento 2, vous pouvez utiliser \Magento\Store\Model\StoreManagerInterfacequi est stocké dans une variable accessible $_storeManagerpour toutes les classes étendant \Magento\Framework\View\Element\Templateainsi la plupart des classes de blocs ( Template, Messages, Redirecttypes de blocs , mais non , Textni TextList).

De cette façon, dans votre bloc, vous pouvez saisir directement le code suivant pour obtenir le code de devise actuel:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()

Pas besoin d'injecter le \Magento\Store\Model\StoreManagerInterfacedans votre construction car c'est une variable accessible depuis n'importe quelle classe de bloc.

Dans toute autre classe

Vous pouvez injecter le \Magento\Store\Model\StoreManagerInterfacedans votre constructeur:

protected $_storeManager;

public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
    $this->_storeManager = $storeManager;
}

Appelez ensuite la même fonction que le bloc:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Raphael chez Digital Pianism
la source
1
Comment puis-je appeler le symbole monétaire par défaut dans la page phtml de mon module personnalisé?
Purushotam Sharma
5

Cela s'inspire de Magento\Framework\Pricing\Render\Amountet cela fonctionne bien dans mon cas (se comportant comme 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();
}

Vous pouvez également obtenir le symbole monétaire:

/**
 * Get current currency symbol
 *
 * @return string
 */ 
public function getCurrentCurrencySymbol()
{
  return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}
Andrea
la source