2011-09-01 19 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

相關問題