Magento 1’de, geçerli para birimi kodunu aşağıdakileri yaparak alabilirsiniz:
Mage::app()->getStore()->getCurrentCurrencyCode()
Magento 2'de yapmanın önerilen yolunun ne olduğunu merak ediyorum. Benim durumumda bir blok halinde.
Magento 1’de, geçerli para birimi kodunu aşağıdakileri yaparak alabilirsiniz:
Mage::app()->getStore()->getCurrentCurrencyCode()
Magento 2'de yapmanın önerilen yolunun ne olduğunu merak ediyorum. Benim durumumda bir blok halinde.
Yanıtlar:
Magento 2'de, kullanabilir \Magento\Store\Model\StoreManagerInterface
erişilebilir bir değişken olarak depolanan $_storeManager
uzanan her sınıf için \Magento\Framework\View\Element\Template
blok sınıflarına (kadar en Template
, Messages
, Redirect
blok tipleri değil Text
de TextList
).
Bu şekilde, bloğunuza, geçerli para birimi kodunu almak için doğrudan aşağıdaki kodu yazabilirsiniz:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
\Magento\Store\Model\StoreManagerInterface
Herhangi bir blok sınıfından erişilebilen bir değişken olduğundan, yapınıza enjekte etmeye gerek yok .
Yapıcınıza şunu enjekte edebilirsiniz \Magento\Store\Model\StoreManagerInterface
:
protected $_storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Sonra blokla aynı işlevi çağırın:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
Bu ilham alıyor Magento\Framework\Pricing\Render\Amount
ve benim durumumda iyi çalışıyor (Magento gibi davranıyor):
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();
}
Para birimi sembolünü de alabilirsiniz:
/**
* Get current currency symbol
*
* @return string
*/
public function getCurrentCurrencySymbol()
{
return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}