我需要使用magento 2中的货币代码进行货币汇率。
$currency = $objectManager->get('Magento\Framework\Pricing\PriceCurrencyInterface');
$currencySymbol = $currency->getRate('USD');
我尝试了上面的代码,它返回了致命的错误。
答案 0 :(得分:1)
你可以试试:
$storeManager->getStore()->getBaseCurrency()->getRate('USD');
商店经理在这里:
\Magento\Store\Model\StoreManagerInterface
答案 1 :(得分:0)
使用以下代码通过使用货币代码来获取货币汇率:
$currency = $_objectManager->create('Magento\Directory\Model\CurrencyFactory')->create()->load($currencyCode);
$currencySymbol = $currency->getCurrencySymbol();
答案 2 :(得分:0)
您应该使用Direct Injection来完成此操作而不是对象管理器。以下是使用Tim Zwinkels建议的代码放置观察者类的代码:
<?php
namespace Company\Module\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
use \Psr\Log\LoggerInterface;
use Magento\Store\Model\StoreManagerInterface;
class SalesOrderSaveAfterObserver implements ObserverInterface
{
private $_logger;
protected $_storeManager;
public function __construct(
LoggerInterface $logger,
StoreManagerInterface $_storeManager
){
$this->_logger = $logger;
$this->_storeManager = $_storeManager;
}
/**
* @param EventObserver $observer
* @return void
*/
public function execute(EventObserver $observer)
{
$order = $observer->getEvent()->getOrder();
$currencyCode = $order->getOrderCurrencyCode();
$grandTotal = $order->getGrandTotal();
$currencyRate = $this->_storeManager->getStore()->getBaseCurrency()->getRate($currencyCode);
$this->_logger->log('INFO', 'Currency Code: ' . $currencyCode);
$this->_logger->log('INFO', 'Grand Total: ' . $grandTotal);
$this->_logger->log('INFO', 'Currency Rate: ' . $currencyRate);
}
}
这将在var / log / system.log文件中记录所有货币代码,总计和货币汇率。