2010-09-30 24 views
0

我試圖建立一個Zend的網站具有以下目錄結構:問題得到Zend的形式工作

application 
    -configs 
    -forms 
    -modules 
    -admin 
    -default 
     -controllers 
      -IndexController.php 
     -forms 
      -Testform.php 
     -layouts 
     -modules 
     -views 

然後在我的IndexController.php我有以下

公共職能contactMeAction() {

$request = $this->getRequest(); 
    $form = new Form_Testform(); 

    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($request->getPost())) { 

//進程東西

  return $this->_helper->redirector('index'); 
     } 
    } 

    $this->view->form = $form; 

}

文件Testform.php我

類Form_Testform擴展Zend_Form的 在

{ 公共職能的init(){ ...... 等

但我m出現以下錯誤:

致命錯誤:類'Form_Testform'找不到/home/websites/test.local/public_html/prototype/application/modules/default/controllers/Ind exController.php第22行

調用堆棧: 0.0004 325228 1. {主}()/home/websites/test.local/public_html/prototype/public/index.php:0 0.1742 5351472 2. Zend_Application- > run()/home/websites/test.local/public_html/prototype/public/index.php:0.1742 5351472 3. Zend_Application_Bootstrap_Bootstrap-> run()/opt/ZendFramework-1.10.7/library/Zend/Application。 php:366 0.1745 5351708 4. Zend_Controller_Front-> dispatch()/opt/ZendFramework-1.10.7/library/Zend/Application/Bootstrap/Bootstrap.php:97 0.1872 5707240 5. Zend_Controller_Dispatcher_Standard-> dispatch()/ opt/ZendFramework-1.10.7/library/Zend/Controller/Front.php:954 0.2026 6016200 6. Zend_Controller_Action-> dispatch()/ o pt/ZendFramework-1.10.7/library/Zend/Controller/Dispatcher/Standard.php:295 0.2029 6020692 7. IndexController-> contactMeAction()/opt/ZendFramework-1.10.7/library/Zend/Controller/Action.php :513

我哪裏錯了?

回答

1

基本上ZF沒有找到它期望的形式。我認爲你需要像application/forms這樣的表格,而不是像你那樣在application/modules/default/forms中。

然後把它作爲:

Application_Form_Testform extends Zend_Form

,而不是

Form_Testform extends Zend_Form

---編輯---

所以在application/forms你有文件Testform.php 那文件看起來像:

class Application_Form_Testform extends Zend_Form { 
// form code 
} 

在你的控制器中有(注意動作的命名......contactmeAction,不contactMeAction):

public function contactmeAction { 
    $form = new Application_Form_Testform(); 
    $this->view->form = $form; 
} 

然後在您的視圖contactme.phtml

echo $this->form; 

這應該工作。如果沒有,我會檢查拼寫,大寫在你的行動名稱,並確保事情是在正確的路徑。

+0

我試過了,但沒有奏效。 – Paul 2010-10-01 18:29:34

+0

看我的編輯。這應該解決它(注意你的行動的名稱的情況下)。 – Stuart 2010-10-03 02:56:19

+0

我得到致命錯誤:找不到類'Application_Form_Testform',有沒有辦法在屏幕上顯示它試圖查找的位置? – Paul 2010-10-03 10:47:42

0

這是得到下面的東西都對齊/一致的問題:

  1. 命名空間
  2. 類的命名規則
  3. 類文件的位置

如果你希望把你的表格在文件夾application/modules/default/forms中,然後命名類Default_Form_Testform

+0

把它放在那個文件夾中並重命名它對我來說不起作用 – Paul 2010-10-01 18:29:03

+0

你是在1.'configs/application.ini'還是2.'Bootstrap :: _ initXXX()'方法中聲明/設置不同的appnamespace ? – 2010-10-02 00:10:24

0

檢查姓名/名稱空間爲gaoshan88說(必須是 「類Application_Form_Testform擴展Zend_Form的」 和 「$形式=新Application_Form_Testform()」)

檢查您的應用程序/ CONFIGS /的application.ini包含這些行:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.frontController.defaultModule = "default" 
resources.modules[] = "" 

最後創建一個空的Bootstrap.php文件,並將它放在application/modules/default /目錄中。