我有一个为视图提供表单的 MVC。我正在考虑提供表单内容的最佳方法,即标签等表单元素和选择等表单输入。表单元素可能会经常更改,并且会有跨越多个页面的许多不同版本。
我想了三种方法,每一种都让我不满意。
- 表单的每个版本都将完全用 html 编写并保存为谨慎的视图。
优点:如果我需要一组特定的元素,我可以用我的控制器中的一行代码调用一个视图。
缺点:我最终会得到几十个视图。
- 将负载转移到我的控制器,并将一个元素名称数组传递给我的视图
array('select' => array('label' => "element 1", 'class => "big"), 'select', 'input', 'input')
,它将获取该数组并将其作为表单元素解析到标记中。
优点:允许我只有一个视图,并且我可以在控制器级别指定要加载到视图中的一组表单元素。
缺点:我的控制器会很快从几行代码变成几百行数组定义。
- 序列化元素集并将它们放入数据库中以便随时调用。
优点:我的控制器上有几行代码和一个视图文件。
缺点:对任何一组表单元素进行更改都会变得非常痛苦。每当我必须包含一个新集合或进行更改时,我都必须访问数据库并反序列化和序列化。
因此,对于同一表单的不同版本的模板化,并允许表单元素的互换性,你们建议的方法是什么?