2012-04-18 23 views
-1

カスタムアクションでフォームエコー:私の見解ではZendFrameworkは、私は以下のこのアクションとコントローラーを持って

public function addAction() 
{ 
    //action for the comments submission 
    $form = new Application_Form_Comment(); 
    $form->submit->setLabel('Comment'); 
    $this->view->form = $form; 
    if ($this->getRequest()->isPost()) { 
     $formData = $this->getRequest()->getPost(); 
     if ($form->isValid($formData)) { 
     $comment = new Application_Model_DbTable_Comments(); 
     $comment->addComment($formData['comment'], $id); 
      $this->_helper->redirector('index'); 
     } else { 
      $form->populate($formData); 
     } 
    } 

私はの$ this - >フォームをエコー場合を、 フォームが表示されません。

のRik

+0

ビューでは、 'var_dump($ this-> form);'は何を返しますか?違いはないかもしれませんが、私はいつもisValid/populateを呼び出した後、またはエラーを追加して*近くのビューにフォームを割り当てます。しかしそれは問題ではないかもしれません。私はvar_dumpが何を表示しているのか興味があります。 – drew010

+0

エラーなし例外はありませんか? – Songo

+0

NULL、上記のコードがインデックスアクションにある場合、フォームに表示されます。しかし、それはコードと衝突するので、私はそれ自身の行動でそれを必要とします。 – Rik89

答えて

0

あなたが任意の特定のコントローラからフォームを分離しようとしていると仮定すると、あなたは、ビューヘルパーを使用することができます。 Writing your own is quite easy。どちらにだけ行う、あなたがそれを必要とする表示次に

class Zend_View_Helper_CommentForm extends Zend_View_Helper_Abstract 
{ 
    public function commentForm() 
    { 
     $form = new Application_Form_Comment(); 
     return $form; 
    } 
} 

: - - :

が格納されるファイル application/views/helpers/CommentForm.phpを作成し、フォームをレンダリングします

echo $this->commentForm(); 

+0

私はaddAction()でコードが必要です。 – Rik89

+0

あなたの答えが更新されました。また、ファイル名の訂正に注意してください。ごめんなさい。 – vascowhite

+0

素晴らしい!それは感謝した – Rik89

関連する問題