Model 从条令实体构建Zend_表单的元素

Model 从条令实体构建Zend_表单的元素,model,zend-form,doctrine-orm,entities,Model,Zend Form,Doctrine Orm,Entities,经过大量阅读,我意识到Zend_形式可以分为不同的表示形式,它非常适合作为模型的视图 按照所提出的逻辑,我有了一个想法,将条令[2]实体传递给一个类的构造函数,该类扩展了Zend_形式,在本例中是App_形式 因此,在我的实体中,每种形式都有一个方法,遵循以下模式: protected function _formFormName{}() 该实体扩展了抽象类App_Form_实体,该类具有检索表单的方法: final public function getForm($form = null)

经过大量阅读,我意识到Zend_形式可以分为不同的表示形式,它非常适合作为模型的视图

按照所提出的逻辑,我有了一个想法,将条令[2]实体传递给一个类的构造函数,该类扩展了Zend_形式,在本例中是App_形式

因此,在我的实体中,每种形式都有一个方法,遵循以下模式:

protected function _formFormName{}()
该实体扩展了抽象类App_Form_实体,该类具有检索表单的方法:

final public function getForm($form = null)
并且仍然具有isValid()和getMessage()方法

但许多人更喜欢将表格放在单独的文件中,请参见:

我想知道以下哪种方法是最好的:将实体作为第一个参数传递给表单的构造函数,将所需表单作为可选的第二个参数,或者从实体获取表单(如Matthew所述),并将所需表单的名称作为第一个参数传递

欢迎任何回答

以下是两个代码,显示了这两个示例的含义,首先是我的提案:

<?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);
$loginForm = new App_Form_Login($user);
$this->view->loginForm = $loginForm;

//My view script
echo $this->loginForm

你能用一点代码详细说明一下这两个选项吗?@rojoca我添加了示例。好的,接下来的示例中,我有一个受保护的方法_formLogin(),它返回一个包含表单信息的数组,在这种情况下是正确的用法,因为我没有创建表单本身的对象,只要有必要的数据来创建它。对吗?这个方法必须是公开的否则你怎么能访问它?我不相信你需要这样的方法。在
App\u Form\u Login
中,您将有权访问
User
对象,您可以在该对象上获取/设置值。您还需要从
User
获得什么?为什么要尝试让用户实体来描述表单。。。这不是表单的用途吗?我使用了类似于rojoca建议的东西,我为每个表单都有一个自定义表单类。我有一个扩展Zend_表单的类App_表单,并且有从实体获取表单的方法,所以我只使用App_表单($Entitie);
<?php
//My controller action
/* @var $em Doctrine\ORM\EntityManager */
$user = $em->find('MyNamespace\User', 1);
$loginForm = new App_Form_Login($user);
$this->view->loginForm = $loginForm;

//My view script
echo $this->loginForm