1

我有一個測試模塊。在測試模塊中,我在窗體文件夾中有一個窗體。無法訪問模塊控制器中的模塊表單

myproject的/應用/模塊/測試/形式/ TestForm.php

class Test_Form_TestForm extends Zend_Form { 
    //form elements 
} 

myproject的/應用/模塊/測試/控制器/ TestController.php

class Test_TestController extends Zend_Controller_Action { 

    public function indexAction() { 
     $this->view->form = new Test_Form_TestForm(); // this is generating error 
    } 
} // end class 

表格初始化在控制器中產生以下錯誤:

Fatal error: Class 'Test_Form_TestForm' not found in C:\wamp\www\student\application\modules\notification\controllers\NotificationController.php on line 16 

如何使此表單在控制器中可訪問。同一類型的案件正在使用默認控制器。我知道我必須使用Form_指示器在引導程序中註冊模塊,但不知道確切的語法。

回答

4

您還可以初始化多個模塊在一個單獨的函數在一個引導文件,如:

protected function _initAutoloaders() { 

     $test_loader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Test', 
                      'basePath' => APPLICATION_PATH . '/modules/test' 
     )); 


     $mynew_loader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'Mynew', 
                      'basePath' => APPLICATION_PATH . '/modules/mynew' 
     )); 
} 
+0

主Bootstrap中的最短路徑... – Awan 2011-02-08 18:24:18

4

爲了使Zend Autoloader適用於您的模塊,您需要爲所有模塊啓動引導程序,並且還需要對模塊資源進行初始化。

所以,在你application/modules/test/Bootstrap.php

class Test_Bootstrap extends Zend_Application_Module_Bootstrap {} 

UPD:

而在你application/configs/application.ini:有關模塊中自動加載

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"  
resources.modules[] = 

更多信息here

+0

我已經在** application/modules/test/Bootstrap.php中創建了Test_Bootstrap類,但同樣的錯誤。你能提供一些更多的信息。 – Awan 2011-02-06 08:55:04

1

我不知道這是不是最好的方法,但它的工作原理。

在你的引導

... 
$autoloader = new Zend_Loader_Autoloader_Resource(array('namespace' => '', 'basePath' => APPLICATION_PATH)); 
$autoloader->addResourceType('Test_Form', '/test/forms', 'Test_Form'); 
... 
2

維卡的回答是模塊如何設置自動加載正確的。

您的錯誤指出無法在NotificationController控制器的通知模塊中找到表單類。

所以你需要有引導類的通知模塊

在你application/modules/notification/Bootstrap.php:

class Notification_Bootstrap extends Zend_Application_Module_Bootstrap {} 
1

Vika的回答似乎是正確的。

如果您仍然有問題,嘗試修改的application.ini

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.moduleDefault = "test" 
resources.modules[] = "test" 
resources.modules[] = "other" 

如果指定的資源清單準確模塊名稱,Zend公司將自動奇蹟般地登記表和其他資源的自動裝載機。在調試案例modules/test/Boostrap。php應該被觸發並且裏面有_init方法。玩的開心。