我使用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
答案 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中禁用该模块