我有一个auth
模块,并希望在模块的forms
文件夹中保持Login
形式。我有我的类命名为Auth_Form_Login
和我用来实例化它在auth
的Index
控制器的代码是:
$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
)
)
);