0

我有一个为视图提供表单的 MVC。我正在考虑提供表单内容的最佳方法,即标签等表单元素和选择等表单输入。表单元素可能会经常更改,并且会有跨越多个页面的许多不同版本。

我想了三种方法,每一种都让我不满意。

  • 表单的每个版本都将完全用 html 编写并保存为谨慎的视图。

优点:如果我需要一组特定的元素,我可以用我的控制器中的一行代码调用一个视图。

缺点:我最终会得到几十个视图。

  • 将负载转移到我的控制器,并将一个元素名称数组传递给我的视图array('select' => array('label' => "element 1", 'class => "big"), 'select', 'input', 'input'),它将获取该数组并将其作为表单元素解析到标记中。

优点:允许我只有一个视图,并且我可以在控制器级别指定要加载到视图中的一组表单元素。

缺点:我的控制器会很快从几行代码变成几百行数组定义。

  • 序列化元素集并将它们放入数据库中以便随时调用。

优点:我的控制器上有几行代码和一个视图文件。

缺点:对任何一组表单元素进行更改都会变得非常痛苦。每当我必须包含一个新集合或进行更改时,我都必须访问数据库并反序列化和序列化。

因此,对于同一表单的不同版本的模板化,并允许表单元素的互换性,你们建议的方法是什么?

4

1 回答 1

0

您可以构建表单方法库并扩展适当的控制器。我通常会为任何永久数据构建库或“帮助”类,使我的控制器保持统一和整洁。这样做使您能够简单地将控制器扩展到class Form_Data您可以拥有构建单个表单元素的专用方法的地方,同时也强制分离关注点。

于 2013-05-11T04:40:48.867 回答