我遇到了Zend_Framework的一个奇怪问题,我无法从默认的任何模块加载表单或模型。
我的控制器(在用户模块中)中有以下代码行
$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。
非常感谢
加里
[编辑]
这绝对是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;
}
答案 0 :(得分:2)
您是否尝试将空的Module_Bootstrap添加到特定模块?像这样:
<?php
class User_Bootstrap extends Zend_Application_Module_Bootstrap
{// nothing in here except you really want to do anything here ;)}
执行此操作后,您可以从引导程序中删除_initAutoload()
和_initModuleAutoload()
方法。创建模块引导程序时,默认情况下会自动为该模块创建Zend_Application_Module_Autoloader。