MVC大规模版本视图的抽象级别

时间:2013-05-11 03:55:00

标签: php codeigniter templates model-view-controller mvvm

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

我想过三种方法,每种方法对我都不满意。

  • 表单的每个版本都将以html格式编写并保存为 一个谨慎的观点。

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

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

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

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

缺点:我的控制器将很快从几行代码转到几百行数组定义。

  • 序列化元素集并将它们塞进一个数据库中,以便随时调用。

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

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

因此,为了模仿同一表单的不同版本,并允许表单元素的可互换性,你们建议的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以构建表单方法库并扩展相应的控制器。我通常会为任何永久数据构建库或“助手”类,使我的控制器保持统一和整洁。这样做使您能够简单地将控制器扩展到class Form_Data,在那里您可以使用专用方法来构建单独的表单元素,同时强制执行关注点分离。