經過多次閱讀,我意識到Zend_Form可以分爲各種表示形式,它很適合作爲模型。從Doctrine實體構建Zend_Form的元素
遵循Matthew Weier O'Phinney提出的邏輯,我想到了將Doctrine [2] Entitie傳遞給擴展Zend_Form的類的構造函數,在這種情況下,App_Form。
所以在我entitie,我有一個方法爲每個表單,下面的模式:
protected function _formFormName{}()
是Entitie擴展抽象類App_Form_Entitie,有一個方法來檢索形式:
final public function getForm($form = null)
並仍然有方法isValid()和getMessage()。
但很多人寧願留在單獨的文件形式,請參閱:
Where to place Zend_Forms, Controller? Model? Somewhere else?
我不知道其中哪些是最好的方法:通過實體的形式的構造函數作爲第一個參數,以及所需的形式,如可選的第二個參數,或從實體獲取表單(如Matthew所述),並將第一個參數作爲所需表單的名稱傳遞。
歡迎任何答案。
這裏是展示兩個例子怎麼會,2個碼,我的建議:
<?php
//My controller action
/* @var $em Doctrine\ORM\EntityManager */
$user = $em->find('MyNamespace\User', 1);
$loginForm = new App_Form($user, array('form'=> 'login'));
$this->view->loginForm = $loginForm;
//My view script
echo $this->loginForm;
這裏馬修的建議,其中的形式在不同的文件:
<?php
//My controller action
/* @var $em Doctrine\ORM\EntityManager */
$user = $em->find('MyNamespace\User', 1);
$formLogin = $user->getForm('login'); //The entity creates a new instance of the class App_Form_Login and returns it.
$this->view->formLogin = $formLogin
//In my view...
echo $this->formLogin;
你可能會詳細說明這兩個選項的一段代碼? – rojoca 2011-04-25 14:55:22
@rojoca我加了個例子。 – JCM 2011-04-25 20:11:57