Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller zend框架理论和mvc模式:模型和表单之间的数据连接应该是什么样的层?_Model View Controller_Zend Framework_Doctrine - Fatal编程技术网

Model view controller zend框架理论和mvc模式:模型和表单之间的数据连接应该是什么样的层?

Model view controller zend框架理论和mvc模式:模型和表单之间的数据连接应该是什么样的层?,model-view-controller,zend-framework,doctrine,Model View Controller,Zend Framework,Doctrine,我正在学习Zend框架和学说 我想知道什么是连接表单和模型的最佳实践,反之亦然 在某些情况下,从form类中的模型加载数据非常方便。让我们说一个使用许多模型的非常独特的类 在其他情况下,在为表单准备数据的模型类中有方法是很方便的。假设它可以有一个方法返回为selectoptions元素准备的数组,所以这个方法对于许多表单都很有用 我希望保持一致性,并始终将这种逻辑保持在一个层中 我认为控制器不是合适的地方,因为我想保持它的清晰和简单 您的做法是什么来实现这一目标(将模型连接到表单) - 我的结论

我正在学习Zend框架和学说

我想知道什么是连接表单和模型的最佳实践,反之亦然

在某些情况下,从form类中的模型加载数据非常方便。让我们说一个使用许多模型的非常独特的类

在其他情况下,在为表单准备数据的模型类中有方法是很方便的。假设它可以有一个方法返回为selectoptions元素准备的数组,所以这个方法对于许多表单都很有用

我希望保持一致性,并始终将这种逻辑保持在一个层中

我认为控制器不是合适的地方,因为我想保持它的清晰和简单

您的做法是什么来实现这一目标(将模型连接到表单)

-
我的结论是,我应该为我所有的需要准备我的模型。如果我必须处理许多模型,我将有一个服务层(这是正确的术语吗?)来连接这些模型。因此,模型或服务将具有为表单添加数据的方法。它将能够接受来自表单值的数据。

我认为控制器是连接模型和表单的最佳位置。如果要防止大量填充表单的代码,请在接受模型的表单上创建一个填充方法

如果您让模型和表单直接通信,那么在特定时间发生的事情将变得非常混乱。我会创建一些方便的方法,比如populate方法,让事情变得简短,但是所有的动作都应该从控制器开始,以保持事情的中心,防止“神奇行为”


我倾向于在控制器中映射表单和模型,但我听到过模型应该交付表单的观点。表单通常是个怪兽,因为它们包含视图元素。我喜欢你的答案,特别是因为它验证了我已经做过的事情;)