Skip to content

Fatal error: Call to a member function toCurrency() on null in app\code\core\Mage\Directory\Model\Currency.php on line 270 #1

@TivoSoho

Description

@TivoSoho

This has been troubling us for a while and hard to debug as after clearing cookies it is fine again. But I believe it comes from Aoe_BackendDefaultLanguage.

This is a sample from Magento's own core code:
Mage::getSingleton('adminhtml/session')->setLocale(Mage::app()->getLocale()->getLocaleCode());
And this is what you are doing in Aoe_BackendDefaultLanguage_Model_Observer:
$localeCode = Mage::getModel('core/locale')->getLocale();

And since in Mage_Adminhtml_Model_Observer we have so:

    public function bindLocale($observer)
    {
        if ($locale=$observer->getEvent()->getLocale()) {
            if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
                $locale->setLocaleCode($choosedLocale);
            }
        }
        return $this;
    }

How this manifests in the Mage_Directory_Model_Currency is that is calls for the currency($currency) function in Mage_Core_Model_Locale and that has:
self::$_currencyCache[$this->getLocaleCode()][$currency])
As getLocaleCode() returns an object, it will fail to set the values in the array, returns null and you cannot call methods on null - thus the error.

So just replace the getLocale() with getLocaleCode() and it should be fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions