ZF不会自动加载模块中的模型和表单

时间:2012-01-25 17:35:34

标签: zend-framework

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

1 个答案:

答案 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。

请参阅The Module Resource Autoloader