我遇到了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