PHP / Zend:致命错误 - 找不到类

时间:2011-09-01 14:13:24

标签: zend-framework zend-framework-modules

我有一个Zend项目,其目录结构如下:

/myApp
  /application
    Bootstrap.php
    /configs
      application.ini
    /layouts
    /modules
      /default
        /controllers
          MessageController.php
          ErrorController.php
          IndexController.php
        /models
          /DbTable
            Message.php
          Message.php
          MessageMapper.php
        /views
        Bootstrap.php
      /login
        /controllers
        /forms
        /library/login
        /models
        /plugins
        /views
        Bootstrap.php
  /data/db
  /library/zend
  /public

http://localhost/ - 工作正常,但我无法使用默认模块中的登录模块和消息。我收到以下错误:

致命错误:第14行的/Library/WebServer/Documents/myApp/application/modules/default/controllers/MessageController.php中找不到类'Application_Module_Default_Model_MessageMapper'

我确信我没有初始化我需要的东西。这是我的代码看起来像..

的application.ini

autoloaderNamespaces[] ="Message_"
autoloaderNamespaces[] ="Login_"
autoloadernamespaces.0 = "Zend_"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultActionName = "index"
resources.frontController.params.displayExceptions = 0
resources.frontController.defaultModule = "default"
resources.frontController.params.prefixDefaultModule = "1"
resources.frontController.plugins[] = "Login_Plugin_SecurityCheck"
resources.modules = ""

/application/bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initDoctype()
  {
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('HTML5');
  }
}

/public/index.php

set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));

require_once 'Zend/Application.php';
require_once('Zend/Loader/Autoloader.php');
$autoloader = Zend_Loader_Autoloader::getInstance();

/module/default/controllers/MessageController.php

$message = new Application_Module_Default_Model_MessageMapper();
$this->view->entries = $message->fetchAll();

如果有更多细节会有所帮助,请告诉我。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

你试过了吗?

$message = new Default_Model_MessageMapper(); 

另外,您是否在模块Bootstrap.php文件中自动加载模块?自从我使用ZF以来,我不确定它有多大变化,但我不得不包括这个:

$loader = new Zend_Application_Module_Autoloader(array(   
    'namespace' => 'Default_',
    'basePath'  => '/path/to/modules/default'
));

答案 1 :(得分:0)

我也有同样的问题,但我的原因非常简单

我的表单是 Form_Template_Add &控制器 TemplateController 。 从控制器我调用表单 - new Form_Template_Add();

我的表单位于文件夹模板

问题与文件夹名称有关,请参阅模板中的't'是小型大写字母,而'T'代表控制器&班级名称是上限。 我将文件夹名称更改为模板&它起作用了...... hooya

答案 2 :(得分:0)

确保在每个模块目录中创建了一个Bootstrap.php,如下所示:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{}

其中Admin是模块的名称。另外,确保目录modules / admin / forms中实际存在一个文件Login.php,其类为Admin_Form_Login

[Zend_Form][1.11.1] Error Message Fatal error: Class 'Admin_Form_Login' not found in ...\modules\default\controllers\IndexController.php