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.
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.
Réponses:
Magento 2, vous pouvez utiliser \Magento\Store\Model\StoreManagerInterface
qui est stocké dans une variable accessible $_storeManager
pour toutes les classes étendant \Magento\Framework\View\Element\Template
ainsi la plupart des classes de blocs ( Template
, Messages
, Redirect
types de blocs , mais non , Text
ni 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\StoreManagerInterface
dans votre construction car c'est une variable accessible depuis n'importe quelle classe de bloc.
Vous pouvez injecter le \Magento\Store\Model\StoreManagerInterface
dans 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()
Cela s'inspire de Magento\Framework\Pricing\Render\Amount
et 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();
}