我遇到了Zend_Framework的一個奇怪的問題,我不能從任何模塊加載默認以外的窗體或模型。ZF沒有自動加載模塊和模塊從模塊
我的代碼在我的控制器以下行(用戶模塊)
$myAccountModel = new User_Model_MyAccount();
但是我得到的是
Fatal error: Class 'User_Model_MyAccount' not found in F:\My Webs\freedate\application\modules\user\controllers\MyAccountController.php on line 13
我檢查了文件路徑和類名錯誤並且都是正確的,我有這個項目設置類似於我以前完成的其他ZF項目,唯一的區別是這是在WAMP服務器上而不是在LAMP服務器上。
如果我嘗試從默認模塊加載模型或表單,它加載正常,這些代碼行不會產生錯誤,並且類加載正常。
$loginForm = new Form_Login();
$loginModel = new Model_Login();
如果有人能提供一些線索來是怎麼回事,這將是最有幫助的,因爲我現在已經撞南牆!
我使用ZF 1.11.11 btw。
非常感謝
加里
[編輯]
這是definatly與ZF自動加載一萬阿英,蔣達清,如果我添加以下行錯誤消失。
require_once(APPLICATION_PATH . '/modules/user/models/MyAccount.php');
在我的application.ini我有
; modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =
,在我的bootstrap.php我有
/** * Initialize autoloader
* @return Zend_Loader_Autoloader
*/
protected function _initAutoload() {
return Zend_Loader_Autoloader::getInstance();
}
/** * Initialize module autoloader
* @return Zend_Application_Module_Autoloader
*/
protected function _initModuleAutoload() {
$modelLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH . '/modules/default'));
return $modelLoader;
}
就是這樣,我忘了將引導文件添加到模塊。感謝你的救星。 – Garry
當我刪除整個應用程序因爲無法找到我的ACL文件(致命錯誤:類'Model_FreedateAcl'找不到)而導致整個應用程序崩潰時,我能夠從引導程序刪除_initAutoload()而不是_initModuleAutoload()。 – Garry
爲了防止出現這種情況,您應該在application.ini文件中設置一個'appnamespace',並將所有不屬於模塊一部分的類作爲前綴,因此它可能是'Application_Model_FreedateAcl'而不是'Model_FreedateAcl'。或者你可以像你一樣設置一個沒有命名空間的加載器。 – drew010