我有一个MVC,可以为视图提供表单。我正在思考提供表单内容的最佳方法,即表单元素,如标签和表单输入,例如选择。表单元素可能会经常更改,并且会有多个不同的版本跨越多个页面。
我想过三种方法,每种方法对我都不满意。
优点:如果我需要一组特定的元素,我可以使用控制器中的一行代码调用一个视图。
缺点:我最终会得到几十个观点。
array('select' => array('label' => "element 1", 'class => "big"), 'select', 'input', 'input')
,它将获取数组并将其作为表单元素解析为标记。 优点:允许我只有一个视图,我可以在控制器级别指定要加载到视图中的表单元素集。
缺点:我的控制器将很快从几行代码转到几百行数组定义。
优点:我的控制器和一个视图文件中的几行代码。
缺点:对任何一组表单元素进行更改都会变得非常痛苦。任何时候我必须包含一个新的集合或进行更改,我必须访问数据库并反序列化和序列化。
因此,为了模仿同一表单的不同版本,并允许表单元素的可互换性,你们建议的方法是什么?
答案 0 :(得分:0)
您可以构建表单方法库并扩展相应的控制器。我通常会为任何永久数据构建库或“助手”类,使我的控制器保持统一和整洁。这样做使您能够简单地将控制器扩展到class Form_Data
,在那里您可以使用专用方法来构建单独的表单元素,同时强制执行关注点分离。