控制器文件已加载但类不存在

时间:2010-02-04 19:18:59

标签: magento

我无法在Magento中解决此错误:

“控制器文件已加载,但类不存在”。 (底部满堆)

我基本上是在尝试遵循本教程:Create new module “HelloWorld” – in Magento

...虽然我使用自己的公司/班级名称而不是“hello world”

我总体上难以在Magento上找到好的文档,而且我对它很陌生......

任何人都可以提供一些共同的原因,建议或见解吗?我被淹没,谷歌搜索了几个小时,检查权限和文件结构。你说它的名字。

Trace:
#0 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(306): Mage::exception('Mage_Core', 'Controller file...')
#1 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(282): Mage_Core_Controller_Varien_Router_Standard->_inludeControllerClass('/var/www/dev_ml...', 'Foo_Wr...')
#2 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(195): Mage_Core_Controller_Varien_Router_Standard->_validateControllerClassName('foo_Wr...', 'index')
#3 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Front.php(158): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#4 /var/www/dev/app/Mage.php(459): Mage_Core_Controller_Varien_Front->dispatch()
#5 /var/www/dev/index.php(65): Mage::run()
#6 {main}

4 个答案:

答案 0 :(得分:37)

该错误意味着magento为您的控制器找到了一个预期为(app/code/local/Namespace/Module/controllers/FooController.php)的文件但该内部的类没有预期的名称(它不是 Namespace_Module_FooController

答案 1 :(得分:22)

希望你有这个排序,只是为了让你知道我看了同一个教程,我认为这个错误可以通过在PHP代码示例的开头添加<?php声明来解决。

答案 2 :(得分:15)

您可能会发现this article,(larger series的一部分)(自我链接)更有帮助,而且更多地了解您正在做的事情,这将使您更好将来自己调试一下。

至于你的具体错误

  

已加载控制器文件,但类不存在

这意味着magento能够正确地要求/包含您将控制器置于中的文件,但控制器类名称错误。控制器应命名为

Packagename_Module_ControllernameController

并位于文件夹

app/code/local/Packagename/Modulename/controllers/ControllernameController.php

答案 3 :(得分:2)

我收到此错误是因为我在CartController中使用了以下代码(重写)

require_once "Mage/Checkout/controllers/CartController.php"; 
class Muk_Mycart_CartController extends Mage_Core_Controller_Front_Action
{
}

而不是跟随行代码

require_once "Mage/Checkout/controllers/CartController.php"; 
class Muk_Mycart_Checkout_CartController extends Mage_Core_Controller_Front_Action
{
}

我在“Muk_Mycart_CartController”中缺少“Checkout”。这是错误,因为我在我的CartController中使用了以下代码(重写)

我的目录结构是这样的

\app\code\local\Muk\Mycart\controllers\Checkout
\app\code\local\Muk\Mycart\controllers\Checkout\CartController.php