In Magento 1 können Sie den aktuellen Währungscode folgendermaßen abrufen:
Mage::app()->getStore()->getCurrentCurrencyCode()
Ich frage mich, welche Vorgehensweise in Magento 2 empfohlen wird. In meinem Fall in einem Block.
In Magento 1 können Sie den aktuellen Währungscode folgendermaßen abrufen:
Mage::app()->getStore()->getCurrentCurrencyCode()
Ich frage mich, welche Vorgehensweise in Magento 2 empfohlen wird. In meinem Fall in einem Block.
Antworten:
In Magento 2 können Sie die verwenden , \Magento\Store\Model\StoreManagerInterface
die in einer zugänglichen Variablen gespeichert ist $_storeManager
für jede Klasse erweitert \Magento\Framework\View\Element\Template
so die meisten der Blockklassen ( Template
, Messages
, Redirect
Blocktypen , aber nicht Text
noch TextList
).
Auf diese Weise können Sie in Ihrem Block den folgenden Code direkt eingeben, um den aktuellen Währungscode abzurufen:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Es ist nicht erforderlich, das \Magento\Store\Model\StoreManagerInterface
in Ihr Konstrukt einzufügen, da es eine Variable ist, auf die von jeder Blockklasse aus zugegriffen werden kann.
Sie können Folgendes \Magento\Store\Model\StoreManagerInterface
in Ihren Konstruktor einfügen :
protected $_storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Rufen Sie dann die gleiche Funktion wie der Baustein auf:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Dies ist inspiriert von Magento\Framework\Pricing\Render\Amount
und funktioniert in meinem Fall gut (Verhalten wie bei 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();
}
Sie können das Währungssymbol auch erhalten:
/**
* Get current currency symbol
*
* @return string
*/
public function getCurrentCurrencySymbol()
{
return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}