Magento 2: pobierz aktualny kod waluty

22

W Magento 1 możesz pobrać bieżący kod waluty, wykonując:

Mage::app()->getStore()->getCurrentCurrencyCode()

Zastanawiam się, jaki jest zalecany sposób zrobienia tego w Magento 2. W moim przypadku w bloku.

Raphael at Digital Pianism
źródło

Odpowiedzi:

31

W bloku

W Magento 2, można użyć \Magento\Store\Model\StoreManagerInterface, który jest przechowywany w zmiennej dostępnej $_storeManagerdla każdej klasy rozciągającej \Magento\Framework\View\Element\Templatewięc większość zajęć blokowych ( Template, Messages, Redirectrodzajów bloków, ale nie Textani TextList).

W ten sposób w swoim bloku możesz bezpośrednio wpisać następujący kod, aby uzyskać bieżący kod waluty:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()

Nie trzeba wprowadzać \Magento\Store\Model\StoreManagerInterfacekonstruktów, ponieważ jest to zmienna dostępna z dowolnej klasy bloków.

W każdej innej klasie

Możesz wstrzyknąć do \Magento\Store\Model\StoreManagerInterfaceswojego konstruktora:

protected $_storeManager;

public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
    $this->_storeManager = $storeManager;
}

Następnie wywołaj tę samą funkcję co blok:

$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Raphael at Digital Pianism
źródło
1
Jak mogę wywołać domyślny symbol waluty na stronie phtml w moim module niestandardowym?
Purushotam Sharma
5

To czerpie inspirację Magento\Framework\Pricing\Render\Amounti działa dobrze w moim przypadku (zachowując się jak 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();
}

Możesz uzyskać symbol waluty również:

/**
 * Get current currency symbol
 *
 * @return string
 */ 
public function getCurrentCurrencySymbol()
{
  return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}
Andrea
źródło