Magento 2: Holen Sie sich den aktuellen Währungscode

22

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.

Raphael bei Digital Pianism
quelle

Antworten:

31

In einem Block

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.

In jeder anderen Klasse

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()
Raphael bei Digital Pianism
quelle
1
Wie kann ich das Standardwährungssymbol auf der HTML-Seite in meinem benutzerdefinierten Modul aufrufen?
Purushotam Sharma
5

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();
}
Andrea
quelle