我收到此错误该怎么办?
Fatal error: Class 'forms_AuthForm' not found in C:\dev\workspaces\
adxweb\application\adxsearch\modules\account\controllers\
AuthController.php on line 26
我在AuthForm.php
文件夹中有一个forms
,Authcontroller.php
文件夹中有controllers
,auth.phtml
文件夹中有scripts
。
由于 基兰
答案 0 :(得分:1)
ZF项目中表单的默认路径是APPLICATION_PATH
/ forms,如下所示:
-- application
-- forms
AuthForm.php
-- models
-- modules
-- account
-- controllers
AuthController.php
-- views
-- helpers
-- scripts
-- auth
index.phtml
...
如果您希望将表单放在其他位置,您需要告诉Zend该位置的位置(可以在bootstrap中完成,或者我认为,在application.ini中)。
此外,请确保您的类已正确命名,因为它们反映了它们所包含的文件的路径。名称区分大小写。
[编辑]
阅读本文:http://bsagols.wordpress.com/2010/08/12/zend_loader_autoloader-stand-alone-and-modular-approaches/ - 它描述了您的目标(模块化方法,每个模块形式)。
尽管如此,这还有很长的路要走。我解决它的方法是将表单移动到application/forms
。您可以在那里创建特定于模块的文件夹,如下所示:
--application
-- forms
-- Auth
Auth.php
您构成的类名称将为Namespace_Form_Auth_Auth
,其中Namespace
是您的应用程序命名空间。这种方法不需要修改bootstrap或application.ini。
答案 1 :(得分:1)
在控制器文件$form = new Application_Form_AuthForm()
$form = new forms_AuthForm()
而不是AuthController.php
并确保class Application_Form_AuthForm extends Zend_Form
中有forms/authform.php
。
如果要删除命名空间Application
,请在application.ini
文件集中设置appnamespace = "Application"
至appnamespace =
答案 2 :(得分:1)
如果使用模块化目录结构:
// application/modules/modulename/forms/Name.php
class Modulename_Form_Name extends Zend_Form {
public function init() {
$this->addElements(array(/** */));
}
}
然后不需要额外的设置,
除resources.modules[]=
中的application.ini
和modulename
模块的模块引导外。