Magento 1では、次のようにして現在の通貨コードを取得できます。
Mage::app()->getStore()->getCurrentCurrencyCode()
Magento 2で推奨される方法を教えてください。私の場合、ブロックで。
Magento 1では、次のようにして現在の通貨コードを取得できます。
Mage::app()->getStore()->getCurrentCurrencyCode()
Magento 2で推奨される方法を教えてください。私の場合、ブロックで。
回答:
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();
}