Answers:
在Magento 2,则可以使用\Magento\Store\Model\StoreManagerInterface
存储在可访问的变量$_storeManager
用于扩展每类\Magento\Framework\View\Element\Template
所以大部分的块类(的Template
,Messages
,Redirect
块类型,但不Text
也不TextList
)。
通过这种方式,您可以在块中直接键入以下代码以获取当前货币代码:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
无需\Magento\Store\Model\StoreManagerInterface
在您的构造中插入,因为它是可以从任何块类访问的变量。
您可以\Magento\Store\Model\StoreManagerInterface
在构造函数中注入:
protected $_storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
然后调用与该块相同的函数:
$this->_storeManager->getStore()->getCurrentCurrency()->getCode()
这从中获得了灵感,Magento\Framework\Pricing\Render\Amount
并且在我的案例中效果很好(就像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();
}
您还可以获取货币符号:
/**
* Get current currency symbol
*
* @return string
*/
public function getCurrentCurrencySymbol()
{
return $this->_priceCurrency->getCurrency()->getCurrencySymbol();
}