Вопрос

Я пытаюсь преобразовать валюту в Magento 1.5, используя следующий код в отдельном файле, чтобы проверить преобразование валюты. У меня есть два магазина с соответствующими настройками валюты в администраторе.

set_time_limit(0);
error_reporting(1);
ini_set('display_errors', 1);
define('D_S', DIRECTORY_SEPARATOR);
require_once 'app/Mage.php';
umask(0);
Mage::app();

$_fromCurr = 'USD';
if( Mage::app()->getStore()->getCurrentCurrencyCode() == 'CAD') {
    $_locale = 'en_CA';
    $_toCurr = 'CAD';
} else {
    $_locale = 'en_US';
    $_toCurr = 'USD';
}
$currency = new Zend_Currency($_locale); 
$amount = 150;
echo $_price = $currency->toCurrency(round( Mage::helper('directory')->currencyConvert( $amount, $_fromCurr, $_toCurr ), 2 ));

Я получаю следующую ошибку,

Фатальная ошибка: вызовите функцию члена getCode () на unobject in /var/www/vhosts/www.test.com/httpdocs/app/code/core/mage/directory/model/currency.php в строке 171

Я попытался следить за этим http://www.magentocommerce.com/boards/v/viewthread/118631/p15/#t381027, Но это не работает. Что здесь не так?

Это было полезно?

Решение

Фатальная ошибка PHP вытекает из ошибки в методе преобразования, где предполагается, что $ tocurrence является объектом. Ошибка, однако, вызвана, когда она пытается сделать исключение:

throw new Exception(Mage::helper('directory')->__('Undefined rate from "%s-%s".', $this->getCode(), $toCurrency->getCode()));

Значение этой ошибки в том, что convert Метод не может найти скорость. Я проверил ваш код, и он работает нормально, пока существуют ставки для валют, в которые вы конвертируете/из.

То, что вам нужно сделать, это перейти к System -> Configuration -> Настройка валюты и убедитесь, что используемые вами валюты выбираются в настройке разрешенных валют.

После того, как вы выбрали разрешенные валюты, вам нужно установить ставки. Вы можете сделать это, перейдя на систему -> Управление тарифами валюты. Оттуда вы можете либо ввести свои собственные коэффициенты преобразования в сетку, либо импортировать их, нажав кнопку «Импорт», а затем нажмите «Сохранить тарифы».

После того, как у вас есть курсы валюты для настройки конверсии, он должен работать без зацепления.

Другие советы

Попробуйте ниже код, он будет работать

$_Baseprice = $_product->getPrice(); 
    $_Currentcurrencycode =Mage::app()->getStore()->getCurrentCurrencyCode();
    //This will return USD, EUR e.t.c
    //echo $_Currentcurrencycode;
    if ($_Currentcurrencycode == 'USD') {$_convertedCurrency = Mage::helper('directory')->currencyConvert($cprice, 'SAR', 'USD');}
    else {$_convertedCurrency = Mage::helper('directory')->currencyConvert($cprice, 'SAR', 'SAR');}
    //_convertedCurrency will return price without symbol
    //echo $_convertedCurrency ;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top