Mage注册表项“_singleton / customer / session

时间:2014-02-20 10:41:34

标签: magento

我使用this创建了magento自定义模块。在这个模块中,我正在尝试使用customer_save_after event.Everything非常完美,但是当我将创建的模块文件与本地magento合并时出现问题。像Mage注册表项“_singleton / customer / session”这样的抛出错误已经存在。我已经清除了缓存,但是每件事情都没有解决。有人建议我解决这个问题吗?

以下是错误代码:

 a:5:{i:0;s:62:"Mage registry key "_singleton/customer/session" already exists";i:1;s:2302:"#0 /var/www/dev/app/Mage.php(222): Mage::throwException('Mage registry k...')
    #1 /var/www/dev/app/Mage.php(477): Mage::register('_singleton/cust...', false)
    #2 /var/www/dev/app/code/core/Mage/Checkout/Model/Cart.php(520): Mage::getSingleton('customer/sessio...')
    #3 /var/www/dev/app/code/core/Mage/Checkout/Helper/Cart.php(141): Mage_Checkout_Model_Cart->getSummaryQty()
    #4 /var/www/dev/app/code/core/Mage/Checkout/Block/Links.php(46): Mage_Checkout_Helper_Cart->getSummaryCount()
    #5 [internal function]: Mage_Checkout_Block_Links->addCartLink()
    #6 /var/www/dev/app/code/core/Mage/Core/Model/Layout.php(348): call_user_func_array(Array, Array)
    #7 /var/www/dev/app/code/core/Mage/Core/Model/Layout.php(214): Mage_Core_Model_Layout->_generateAction(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element))
    #8 /var/www/dev/app/code/core/Mage/Core/Model/Layout.php(206): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
    #9 /var/www/dev/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element))
    #10 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks()
    #11 /var/www/dev/app/code/core/Mage/Cms/Helper/Page.php(113): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
    #12 /var/www/dev/app/code/core/Mage/Cms/Helper/Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home')
    #13 /var/www/dev/app/code/core/Mage/Cms/controllers/IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home')
    #14 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Cms_IndexController->indexAction()
    #15 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
    #16 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
    #17 /var/www/dev/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
    #18 /var/www/dev/app/Mage.php(684): Mage_Core_Model_App->run(Array)
    #19 /var/www/dev/index.php(87): Mage::run('', 'store')
    #20 {main}";s:3:"url";s:5:"/dev/";s:11:"script_name";s:14:"/dev/index.php";s:4:"skin";s:7:"default";} 

-Thanks

3 个答案:

答案 0 :(得分:2)

这是因为您已经注册了相同的密钥名称_singleton / customer / session。

#File:app / Mage.php //您可以在此文件中看到以下功能

public static function register($key, $value, $graceful = false)
{
    if (isset(self::$_registry[$key])) {
        if ($graceful) {
            return;
        }
        self::throwException('Mage registry key "'.$key.'" already exists');
    }
    self::$_registry[$key] = $value;
}

我们可以看到,我们存储在注册表中的任何对象或值最终都存储在静态 $ _ registry 类变量中。我们还可以看到,在存储值之前,Magento会检查它是否已经设置。如果是这样,Magento将抛出异常(默认行为)或优雅地返回null

已经设置了其他值

最后,如果您想让变量不可用,可以使用取消注册方法将其从注册表中删除。

Mage::unregister('some_name');

希望这能帮到你

答案 1 :(得分:0)

当我尝试重命名位于<module> folder的{​​{1}}时,我得到了相同的错误。

看起来您在xml(App/Code/Codepool/)中提到的名称与app/etc/modules/<somemodule.xml>中的模块文件夹不匹配。

CodePool重命名为Module Folder中的已注册,可以解决此问题。

答案 2 :(得分:-1)

在shell的magento文件夹中:

php -f compiler.php clear
php -f compiler.php disable

这将禁用编译,并在此命令删除var / cache / *和var / session / *的内容后清除文件:

rm -Rf var/cache/*
rm -Rf var/session/*

另请尝试在app / etc / modules / module.xml中禁用该模块

相关问题