Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 MVC:几乎我所有的内容都是在模型中生成的,我应该使用视图来查看其他内容吗?_Model View Controller_Codeigniter - Fatal编程技术网

Model view controller MVC:几乎我所有的内容都是在模型中生成的,我应该使用视图来查看其他内容吗?

Model view controller MVC:几乎我所有的内容都是在模型中生成的,我应该使用视图来查看其他内容吗?,model-view-controller,codeigniter,Model View Controller,Codeigniter,我正在构建一个web应用程序,其中80-90%的内容是表单或数据表。我通过CodeIgniter使用MVC 我已经构建了一些类来处理表单和表的生成,这些表单和表是在模型中创建的,视图被传递给表单/表对象,而表单/表对象只是响应它。这意味着我的视图非常精简,我重用视图,因为大多数视图只是:- * load head and header views * <?=$form?> * load footer view * 因此,当我有不同的布局时,我只需要一个新视图,即在一个页面上有两

我正在构建一个web应用程序,其中80-90%的内容是表单或数据表。我通过CodeIgniter使用MVC

我已经构建了一些类来处理表单和表的生成,这些表单和表是在模型中创建的,视图被传递给表单/表对象,而表单/表对象只是响应它。这意味着我的视图非常精简,我重用视图,因为大多数视图只是:-

* load head and header views *

<?=$form?>

* load footer view *
因此,当我有不同的布局时,我只需要一个新视图,即在一个页面上有两个表单

问题是当我有一些不是表格或表格的内容时,例如一些摘要信息或只是一段文字,在哪里可以找到最直观的地方?我觉得把它放在视图中会产生误导,因为所有其他内容操作都是由我的模型完成的,所以如果我想编辑表单或表,我会查看模型,甚至很少查看我的视图

我在考虑创建一个简单的“内容”类,处理输出段落和摘要信息。。。然后我可以在模型中创建内容

编辑:


再考虑一下,由于需要生成摘要信息,因此这自然应该在模型中完成。对于像文本段落这样的“固定”内容,因为它仍然是数据,尽管它是静态的,不需要存储在数据库中,但它仍然必须存储在某个地方,并且在模型中有意义。

更合理的做法是,让视图执行您在模型中所做的格式化工作

模型应该以数组的形式返回此类数据,然后您应该有一个视图,能够从数组中布局表单。在Codeigniter中,由于表单帮助器,这一切进展得非常顺利

在示例中,使用引导2的表单创建者:

视图的美妙之处在于,您可以堆叠和混合视图,这可以解决您的问题。在示例中,您可以这样称呼他们:

$data['form'] = $this->radix->board_structure(); // this holds a huge array that I associate to a database model
$this->viewdata["function_title"] = _('Editing board:') . ' ' . $board->shortname;
$this->viewdata["main_content_view"] = $this->load->view('admin/form_creator', $data, TRUE);
$this->load->view('admin/default', $this->viewdata);

在我的应用程序中,这会为页面设置一个标题,使表单成为页面的内容,并将其粘贴到默认的管理面板包装器中。只要将其放入视图中,您基本上可以执行任何操作。

我的模型不进行任何格式设置,它们只需设置表单字段名称、类型和验证规则,并创建表单对象。格式封装在我的表单库中。我想我现在会坚持使用对象路线-它允许我抽象出所有与表单相关的额外内容的复杂性,例如,我只需告诉一个表它是可编辑的,就可以得到一个模态ajax表单:表对象调用我的模型,该模型会抛出正确的表单对象,并将其与所需的js一起放入视图中。