Zend Form类未找到错误

时间:2011-02-25 09:14:39

标签: zend-framework zend-form

我收到此错误该怎么办?

Fatal error: Class 'forms_AuthForm' not found in C:\dev\workspaces\
adxweb\application\adxsearch\modules\account\controllers\
AuthController.php on line 26

我在AuthForm.php文件夹中有一个formsAuthcontroller.php文件夹中有controllersauth.phtml文件夹中有scripts

由于 基兰

3 个答案:

答案 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.inimodulename模块的模块引导外。