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\StoreManagerInterface
che è memorizzato in una variabile accessibili $_storeManager
per ogni classe che estende \Magento\Framework\View\Element\Template
quindi la maggior parte delle classi (blocco Template
, Messages
, Redirect
tipi di blocco ma non Text
ne 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\StoreManagerInterface
nel tuo costrutto in quanto è una variabile accessibile da qualsiasi classe di blocco.
Puoi iniettare il \Magento\Store\Model\StoreManagerInterface
nel 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\Amount
e 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();
}