为什么我的表单不能与我的模块一起工作?


Why isn't my form working with my modules?

我有一个auth模块,并希望在模块的forms文件夹中保持Login形式。我有我的类命名为Auth_Form_Login和我用来实例化它在authIndex控制器的代码是:

$loginForm = new Auth_Form_Login($_POST);

然而,Zend却在抱怨找不到这个类。我做错了什么?

编辑

我的目录结构如下:

application
    configs
    layouts
    modules
        auth
            controllers
            models
            views
                forms      <--- This is what I want to autoload from
        default
            controllers
            models
            views
library
public

同时,模块设置正确:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.prefixDefaultModule = false

似乎你缺少模块引导Auth模块:

application
     modules
         auth
             Bootstrap.php

它可能只包含这一行——只是为了使自动加载生效:

class Auth_Bootstrap extends Zend_Application_Module_Bootstrap {}

您在表单初始化中做的一切都是正确的。自动加载器根本不知道在哪里找到它,所以你需要正确设置zend自动加载器

我不知道你是如何创建你的基于模块的结构。我使用命令行工具来配置一切。

我的application。ini文件中有:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ''
resources.frontController.params.prefixDefaultModule = "1"

在我的Boostrap.php中:

$modelLoader = new Zend_Application_Module_Autoloader ( 
                      array ('namespace' => '', 'basePath' 
                                         => APPLICATION_PATH . 
                                             '/modules/default' ) );

你也可以通过注册你的资源:

手动设置自动加载器。
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath' => 'path/to/my/directory',
    'namespace' => 'Auth',
    'resourceType' => array(
       'form' => array(
            'path' => 'forms/'
            'namespace' => 'Form'
        )
        //...your code
     )
   )
);