2011-09-01 47 views
1

我有以下目录结构一个Zend项目:PHP/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/ - 工作正常,但我不能让默认模块内部的登录模块和消息上班。我得到以下错误:

致命错误:类“Application_Module_Default_Model_MessageMapper”在/Library/WebServer/Documents/myApp/application/modules/default/controllers/MessageController.php没有发现第14行

我当然,我不是在初始化我需要的东西。这里是我的代码看起来像..

的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(); 

让我知道是否有更多的细节会有所帮助。任何帮助将非常感激。

+0

如何在'MessageMapper.php'定义你的课吗? – ChrisA

+0

我有以下几点: '类Default_Model_MessageMapper' 它目前陷入在此行的代码,这是一个函数从数据库中获取的所有消息: '$ =进入新Application_Model_Message();' 我尝试过其他组合,例如'Application_Module_Default_Model_Message();' 仍然没有快乐,但评论这些行使页面加载,所以几乎在那里! – TLD

回答

3

你试过:

$message = new Default_Model_MessageMapper(); 

而且,你的模块的bootstrap.php文件中自动加载的模块?我不知道,因为我用ZF它是如何太大的改变,但我必须包括此:

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

我在代码中添加了这两点,但是我仍然收到错误: '致命错误:类'Application_Module_Default_Model_Message'在/Library/WebServer/Documents/bollyme/application/modules/default/models/MessageMapper.php中找不到我的代码的第56行是: '$ entry = new Application_Module_Default_Model_Message();' – TLD

+1

你需要更新那个 - 然后 - 新的Default_Model_Message(); (从你的班级名称中删除“Application_Module_”) –

+0

固定!它现在正在工作.. both/message和/ login - 欢呼所有的帮助!剥离Application_Module肯定有帮助! – TLD

0

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

我有一个表格Form_Template_Add & a控制器TemplateController。 从控制器我叫窗体 - 新的Form_Template_Add();

我的表单驻留在文件夹模板中。

问题在于文件夹名称,请参阅模板中的't'是小型大写字母,而'T'表示控制器&类名称为大写字母。 我改变文件夹名称模板 &它的工作... hooya

相关问题