ใน Magento 1 คุณสามารถดึงรหัสสกุลเงินปัจจุบันได้โดยทำ:
Mage::app()->getStore()->getCurrentCurrencyCode()
ฉันสงสัยว่าวิธีที่แนะนำให้ทำใน Magento 2 คืออะไรในกรณีของฉันในบล็อก
ใน Magento 1 คุณสามารถดึงรหัสสกุลเงินปัจจุบันได้โดยทำ:
Mage::app()->getStore()->getCurrentCurrencyCode()
ฉันสงสัยว่าวิธีที่แนะนำให้ทำใน Magento 2 คืออะไรในกรณีของฉันในบล็อก
คำตอบ:
ในวีโอไอพี 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();
}