Ошибка Magento "Валюта "USD" не найдена"


Это происходит только тогда, когда я сохраняю для просмотра магазина румынский язык. В этом магазине разрешенными валютами являются доллары США, румынский лей и евро. Я устанавливаю курсы валют для каждой разрешенной валюты: если доллар США является валютой по умолчанию, то у меня есть определенный курс валюты, если румынский лей является валютой по умолчанию, другой конкретный курс валюты и точно то же самое для ЕВРО.

Я искал в Google информацию об этой ошибке, но единственным решением, которое я нашел, было очистить var/кэш и var/сессия... Ну, это не решение проблемы.

A:5:{i:0; s:24: "Валюта 'USD' не найдена"; i:1; s:5065: "#0 /app/code/core/Mage/Core/Model/Locale.php (576): Zend_Currency->__построить ('USD', объект(Zend_Locale))
/app/code/core/Mage/Directory/Model/Currency.php (233): Mage_Core_Model_Locale->валюта ('RON')
/app/code/core/Mage/Directory/Model/Currency.php (238): Mage_Directory_Model_Currency->форматирование(0)
/app/code/core/Mage/Core/Model/Locale.php (682): Mage_Directory_Model_Currency->Формат вывода()
/app/code/core/Mage/Catalog/Block/Product/View.php (168): Mage_Core_Model_Locale->Получить формат()
/приложение/дизайн/интерфейс/шаблон magento/по умолчанию/шаблон/каталог/продукт/просмотр.phtml(69): Mage_Catalog_Block_Product_View->getJsonConfig()
/app/code/core/Mage/Core/Block/Template.php (241): включить ('/главная/mediaswit...')
/app/code/core/Mage/Core/Block/Template.php (272): Mage_Core_Block_Template->Просмотр выборки ('интерфейс/магент...')
/app/code/core/Mage/Core/Block/Template.php (286): Шаблон Mage_Core_Block_Template->Просмотр()
/app/code/core/Mage/Core/Block/Abstract.php (863): Шаблон Mage_Core_Block_Template->_tohtml()
/app/code/core/Mage/Core/Block/Text/List.php (43): Mage_Core_Block_Abstract->ТОХТМЛ()
/app/code/core/Mage/Core/Block/Abstract.php (863): Список Mage_Core_Block_Text_List->_tohtml()
/app/code/core/Mage/Core/Block/Abstract.php (582): Mage_Core_Block_Abstract->ТОХТМЛ()
/app/code/core/Mage/Core/Block/Abstract.php (526): Mage_Core_Block_Abstract->_getchildhtml("содержимое", истина)
/приложение/дизайн/интерфейс/magento-шаблон/по умолчанию/шаблон/страница/2columns-справа.phtml(51): Mage_Core_Block_Abstract->getChildHtml('содержимое')
/app/code/core/Mage/Core/Block/Template.php (241): включить ('/главная/mediaswit...')
/app/code/core/Mage/Core/Block/Template.php (272): Mage_Core_Block_Template->Просмотр выборки ('интерфейс/магент...')
app/code/core/Mage/Core/Block/Template.php (286): Шаблон Mage_Core_Block_Template->Просмотр()
/app/code/core/Mage/Core/Block/Abstract.php (863): Шаблон Mage_Core_Block_Template->_tohtml()
/app/code/core/Mage/Core/Model/Layout.php (555): Mage_Core_Block_Abstract->ТОХТМЛ()
/app/code/core/Mage/Core/Controller/Varien/Action.php (390): Mage_Core_Model_Layout->Вывод()
/app/code/core/Mage/Cms/Helper/Page.php (137): Mage_Core_Controller_Varien_Action->Визуализация()
/app/code/core/Mage/Cms/Helper/Page.php (52): Mage_Cms_Helper_Page->_renderpage(Объект(mage_cms_indexcontroller), "без маршрута")
/app/code/core/Mage/Cms/controllers/IndexController.php (75): Mage_Cms_Helper_Page->Страница визуализации (Объект(mage_cms_indexcontroller), "без маршрута")
/app/code/core/Mage/Core/Controller/Varien/Action.php (419): Mage_Cms_IndexController->Действие norouteaction()
/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php (250): Mage_Core_Controller_Varien_Action->отправка ("Маршрут")
/app/code/core/Mage/Core/Controller/Varien/Front.php (176): Mage_Core_Controller_Varien_Router_Standard->соответствие(Объект(mage_core_controller_request_http))
/app/code/core/Mage/Core/Model/App.php (354): Mage_Core_Controller_Varien_Front->отправка()
/app/Mage.php (683): Mage_Core_Model_App->выполнить(массив)
/index.php (87):Маг::выполнить(", "хранить")


Пожалуйста, помогите. Спасибо.

Author: Sander Mangel, 2014-01-16

1 answers

Хорошо, поэтому я не уверен, что это ошибка, но если вы сравните версии Magento 1.8 и Magento 1.7 для функциональной валюты в Mage_Core_Model_Local, вы заметите ссылку на ошибку с Zend_Currency

Magento 1.7: Mage_Core_Model_Local->валюта

/**
 * Create Zend_Currency object for current locale
 *
 * @param   string $currency
 * @return  Zend_Currency
 */
public function currency($currency)
{
    Varien_Profiler::start('locale/currency');
    if (!isset(self::$_currencyCache[$this->getLocaleCode()][$currency])) {
        try {
            $currencyObject = new Zend_Currency($currency, $this->getLocale());
        } catch (Exception $e) {
            $currencyObject = new Zend_Currency($this->getCurrency(), $this->getLocale());
            $options = array(
                    'name'      => $currency,
                    'currency'  => $currency,
                    'symbol'    => $currency
            );
            $currencyObject->setFormat($options);
        }

        self::$_currencyCache[$this->getLocaleCode()][$currency] = $currencyObject;
    }
    Varien_Profiler::stop('locale/currency');
    return self::$_currencyCache[$this->getLocaleCode()][$currency];
}

Magento 1.8: Mage_Core_Model_Local->валюта

/**
 * Create Zend_Currency object for current locale
 *
 * @param   string $currency
 * @return  Zend_Currency
 */
public function currency($currency)
{
    Varien_Profiler::start('locale/currency');
    if (!isset(self::$_currencyCache[$this->getLocaleCode()][$currency])) {
        $options = array();
        try {
            $currencyObject = new Zend_Currency($currency, $this->getLocale());
        } catch (Exception $e) {
            /**
             * catch specific exceptions like "Currency 'USD' not found"
             * - back end falls with specific locals as Malaysia and etc.
             *
             * as we can see from Zend framework ticket
             * http://framework.zend.com/issues/browse/ZF-10038
             * zend team is not going to change it behaviour in the near time
             */
            $currencyObject = new Zend_Currency($currency);
            $options['name'] = $currency;
            $options['currency'] = $currency;
            $options['symbol'] = $currency;
        }

        $options = new Varien_Object($options);
        Mage::dispatchEvent('currency_display_options_forming', array(
            'currency_options' => $options,
            'base_code' => $currency
        ));

        $currencyObject->setFormat($options->toArray());
        self::$_currencyCache[$this->getLocaleCode()][$currency] = $currencyObject;
    }
    Varien_Profiler::stop('locale/currency');
    return self::$_currencyCache[$this->getLocaleCode()][$currency];
}

Мое предложение состояло бы в том, чтобы попытаться обновить try catch, чтобы он соответствовал Magento 1.8 (я знаю, что это не лучшее решение и, очевидно, я бы не предложил редактировать основные файлы, но добавить перезапись)

 3
Author: David Manners, 2014-01-16 10:46:26