通过货币代码magento 2获取货币汇率

时间:2017-02-09 10:10:03

标签: currency magento2

我需要使用magento 2中的货币代码进行货币汇率。

$currency =  $objectManager->get('Magento\Framework\Pricing\PriceCurrencyInterface');
$currencySymbol = $currency->getRate('USD');

我尝试了上面的代码,它返回了致命的错误。

3 个答案:

答案 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文件中记录所有货币代码,总计和货币汇率。