2011-02-25 69 views
1

我收到這個錯誤,我該怎麼辦?未找到Zend Form class error

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

我有一個AuthForm.phpforms文件夾和文件夾controllersAuthcontroller.phpauth.phtmlscripts文件夾中。

感謝 克蘭

+0

請提供表格目錄的確切位置。 Zend顯然還沒有被告知你的表格的下落,並且看錯了位置。 – mingos 2011-02-25 09:34:33

+1

另外,考慮將類重命名爲'Form_AuthForm'。 「Form」部分被解釋爲「查看」forms'目錄「。 – mingos 2011-02-25 09:35:47

+0

forms目錄是modules/account/forms ..並且在AuthForm.php中它將會像這個類一樣forms_AuthForm extends Zend_Form – kiran 2011-02-25 10:26:17

回答

1

在ZF項目形式的默認路徑是APPLICATION_PATH /表格,是這樣的:

-- 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是你的應用程序的命名空間。這種方法不需要修改引導程序或application.ini。

+0

@ mingos ..感謝和應該在bootstrap或應用程序中編寫代碼。ini文件? – kiran 2011-02-25 10:57:09

+0

查看編輯答案。 – mingos 2011-02-25 11:50:11

1

在你的控制器文件AuthController.php

嘗試$form = new Application_Form_AuthForm()而不是$form = new forms_AuthForm(),並確保你在你的forms/authform.phpclass Application_Form_AuthForm extends Zend_Form

如果你想刪除的命名空間Application然後在application.ini文件中設置appnamespace = "Application"appnamespace =

+0

@experimentX ...是的,我試過你的方式,但我得到同樣的錯誤... – kiran 2011-02-25 14:12:29

+0

@kiran你可以添加你的目錄結構的問題和代碼'controller file'和'form'文件 – 2011-02-26 04:54:00

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模塊。