为什么我的表单不适用于我的模块?

时间:2011-04-20 00:51:40

标签: php zend-framework

我有一个auth模块,并希望在模块的Login文件夹中保留forms表单。我有一个名为Auth_Form_Login的类,我在auth的{​​{1}}控制器中实例化的代码是:

Index

然而,Zend抱怨它无法找到班级。我做错了什么?

修改

我的目录结构如下:

$loginForm = new Auth_Form_Login($_POST);

此外,模块设置正确:

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

library
public

2 个答案:

答案 0 :(得分:1)

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

我不确定您是如何创建基于模块的结构的。我使用配置所有内容的cli tool

所以在我的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' ) );

您还可以设置autoloader manually by registering your resources

$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath' => 'path/to/my/directory',
    'namespace' => 'Auth',
    'resourceType' => array(
       'form' => array(
            'path' => 'forms/'
            'namespace' => 'Form'
        )
        //...your code
     )
   )
);

答案 1 :(得分:1)

好像你缺少Auth模块的模块引导程序:

application
     modules
         auth
             Bootstrap.php

这可能只包含这一行 - 只是为了使自动加载神奇工作:

class Auth_Bootstrap extends Zend_Application_Module_Bootstrap {}