未捕获的异常'Zend_Controller_Dispatcher_Exception',消息'无效的控制器类(“Error_ErrorController”)

时间:2011-04-09 07:11:36

标签: zend-framework module error-handling

我为我的项目创建了3个模块 像这样:

应用程序/模块/管理

应用程序/模块/默认

应用程序/模块/错误

每个模块都有自己的cnotroller,view,layout文件夹。默认模块中的每件事情都是正确的,但是当我去管理模块时,我看到了这个错误(www.domain.com/public/admin)<

  

致命错误:未捕获异常'Zend_Controller_Dispatcher_Exception',并在E:\ xampp \ php \ PEAR \ Zend \ Controller \ Dispatcher \ Standard.php中显示消息'无效的控制器类(“Error_ErrorController”):347堆栈跟踪:#0 E :\ xampp \ php \ PEAR \ Zend \ Controller \ Dispatcher \ Standard.php(256):Zend_Controller_Dispatcher_Standard-&gt; loadClass('ErrorController')#1 E:\ xampp \ php \ PEAR \ Zend \ Controller \ Front.php( 946):Zend_Controller_Dispatcher_Standard-&gt; dispatch(Object(Zend_Controller_Request_Http),Object(Zend_Controller_Response_Http))#2 E:\ zend_progamming \ donyaye_fan_zend \ application \ Bootstrap.php(110):Zend_Controller_Front-&gt; dispatch()#3 E:\ zend_progamming \ donyaye_fan_zend \ public \ index.php(5):Bootstrap-&gt; runApp()#4 {main}在第347行的E:\ xampp \ php \ PEAR \ Zend \ Controller \ Dispatcher \ Standard.php中抛出

这是我的引导代码与此错误有关:

$frontController->addModuleDirectory(ROOT_DIR . '/application/modules'); 
$frontController->setDefaultModule('default');
$frontController->registerPlugin(new Places_Controller_Plugin_ModuleSetup());
$frontController->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array(
        'module'     => 'error',
        'controller' => 'error',
        'action'     => 'error'
    )));

这是我的modulesetup类:

class Places_Controller_Plugin_ModuleSetup  extends Zend_Controller_Plugin_Abstract{    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{

    // Set the layout directory for the loaded module
    $layoutPath = ROOT_DIR . '/application/modules/' . $request->getModuleName() . '/layouts/scripts/';
    Zend_Layout::startMvc(array('layoutPath' =>$layoutPath));

    $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => ROOT_DIR . "/modules/",
    ));
    $autoloader->addResourceTypes(array(
    'admin' => array(
            'path'      => 'admin/',
            'namespace' => 'admin'
        ),
        'error' => array(
            'path'      => 'error/',
            'namespace' => 'error')));

}

}

2 个答案:

答案 0 :(得分:3)

我找到了答案:在errorController中必须在类名前加上错误目录名,如错误errorController

答案 1 :(得分:0)

errorControl.php在您的controllers文件夹中不可用。如果此文件在其位置可用,则会从errorControl.php文件中显示自定义错误。

主要问题是:你的代码在php文件中有一些错误,所以程序正在搜索errorControl.php文件。如果您将从php文件中删除错误,则此错误不会出现。