In Magento 1, è possibile recuperare il codice valuta corrente effettuando:
Mage::app()->getStore()->getCurrentCurrencyCode()
Mi chiedo quale sia il modo consigliato di farlo in Magento 2. Nel mio caso in un blocco.
In Magento 1, è possibile recuperare il codice valuta corrente effettuando:
Mage::app()->getStore()->getCurrentCurrencyCode()
Mi chiedo quale sia il modo consigliato di farlo in Magento 2. Nel mio caso in un blocco.
Risposte:
In Magento 2, è possibile utilizzare il \Magento\Store\Model\StoreManagerInterfaceche è memorizzato in una variabile accessibili $_storeManagerper ogni classe che estende \Magento\Framework\View\Element\Templatequindi la maggior parte delle classi (blocco Template, Messages, Redirecttipi di blocco ma non Textne TextList).
In questo modo nel tuo blocco, puoi digitare direttamente il seguente codice per ottenere il codice valuta corrente:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Non c'è bisogno di iniettare il \Magento\Store\Model\StoreManagerInterfacenel tuo costrutto in quanto è una variabile accessibile da qualsiasi classe di blocco.
Puoi iniettare il \Magento\Store\Model\StoreManagerInterfacenel tuo costruttore:
protected $_storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Quindi chiama la stessa funzione del blocco:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Questo prende ispirazione Magento\Framework\Pricing\Render\Amounte sta funzionando bene nel mio caso (comportandosi come 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();
}
Puoi anche ottenere il simbolo della valuta:
/**
* Get current currency symbol
*
* @return string
*/
public function getCurrentCurrencySymbol()
{
return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}