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\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.
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()
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();
}