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\StoreManagerInterfacedie in einer zugänglichen Variablen gespeichert ist $_storeManagerfür jede Klasse erweitert \Magento\Framework\View\Element\Templateso die meisten der Blockklassen ( Template, Messages, RedirectBlocktypen , aber nicht Textnoch 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\StoreManagerInterfacein 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\StoreManagerInterfacein 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\Amountund 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();
}