2012-04-04 29 views
0

我有一個應用程序有三個模塊:default,disciplinesplans。在disciplines我有一個DbTable至極此模塊中工作正常,但如果我想使用DBTABLE模塊plansplans_dbtable我得到在另一個模塊中找不到Zend-db表

Class 'Disciplines_Model_DbTable_Disciplines' not found in C:\xampp\htdocs\proiect_mps\application\modules\plans\models\DbTable\Plans.php on line 43.

Require_once,包括不解決問題。我製作了Disciplines_Boostrap和Plans_Bootstrap類。但它不起作用。有任何想法嗎?

class Plans_Model_DbTable_Plans extends Zend_Db_Table_Abstract 
{ 
    ... 
    public function addPlan(
     $year, 
     $name, 
     $code, 
     $domain, 
     $specialization, 
     $years) 
    { 

     // Id-ul disciplinei 
     $id_discipline = 0; 
     $discipline = new Disciplines_Model_DbTable_Disciplines(); 
     .... 
    } 
    ... 
} 
+0

我想我已經解決了它自己。我必須寫** require_once(APPLICATION_PATH。'/ modules/disciplines/models/DbTable/Disciplines.php'); **而不是** require_once'/proiect_mps/application/modules/disciplines/models/DbTable/Disciplines.php 「; **。 – 2012-04-04 13:22:41

+0

它應該沒有要求聲明。兩個模塊引導程序是否都擴展了'Zend_Application_Module_Bootstrap',它們是否位於模塊的根目錄?這一直是我無法自動加載模塊資源的原因。 – RockyFord 2012-04-05 08:40:18

+0

是的,他們擴展Zend_Application_Module_Bootstrap,他們在我的模塊的根...如果require_once使可能應用程序工作,那麼它對我來說是好的 – 2012-04-05 10:42:38

回答

-1

我想我已經自己解決了。我不得不寫的

require_once(APPLICATION_PATH.'/modules/disciplines/models/DbTable/Disciplines.php'); 

代替

require_once '/proiect_mps/application/modules/disciplines/models/DbTable/Disciplines.php'; 

這也適用於:

require_once('/../../../disciplines/models/DbTable/Disciplines.php'); 

我的文件夾結構。

0

既然你使用Zend我不會建議你的require_once是最好的答案基本上,如果你有你的配置很好,你不需要require_once任何地方。這可能是一個幫助:

在文件的application.ini

;Module Configuration 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" 
resources.frontController.moduleControllerDirectoryName = "controllers" 

; Enables Modules bootstrap resource plugin, so each module directory has a bootstrap.php file 
resources.modules = 1 

和你的bootstrap.php文件

protected function _initFrontController() { 
     // The Zend_Front_Controller class implements the Singleton pattern 
     $frontController = Zend_Controller_Front::getInstance(); 

     // look in the modules directory and automatically make modules out of all folders found 
     $frontController->addModuleDirectory(APPLICATION_PATH . '/modules'); 

     // forces the front controller to forward all errors to the default error controller (may already be false by default) 
     $frontController->throwExceptions(false); 

     return $frontController; 
    } 

是的,你需要有bootstrap.php中您的每一個模塊

class Disciplines_Bootstrap extends Zend_Application_Module_Bootstrap 
{ 
    /** 
    * This file is ABSOLUTELY NECESSARY to get module autoloading to work. 
    * Otherwise calls to "$form = new Module_Form_MyForm()" will fail. 
    */ 


} 
+0

是否是一個問題,如果我使用「require_once」? – 2012-04-05 11:25:33

+0

那麼它可能會解決問題,所以不知道我是否應該把它稱爲一個問題,但是然後你正在做一些你不應該做的事情。假設你需要從其他模塊訪問更多的10個模型,或者使其達到50個,然後要求其中的每一個都非常合乎邏輯,當你不需要這樣做時。我的意思是這就是框架的真正目的,這樣你就不必做那些單調乏味的工作。 – 2012-04-05 11:51:55

+0

啊......好的......謝謝 – 2012-04-05 12:00:45

相關問題