2011-12-15 54 views
0

我对MVC很新。调查模型或控制器?

我正在使用CodeIgniter创建一个平台,让人们可以提交一份调查问卷,然后将调查问卷放在数据库中供稍后在用户的仪表板中使用。

现在我很困惑,我会如何创建这项调查?我会做一个控制器还是一个模型?我是否会同时使用控制器来创建表单,然后使用模型将数据提交给数据库?

我可以直接在控制器中与我的数据库进行交互吗?

回答

0

模型 通常,数据库表由模型表示。例如,如果您有一个名为'surveys'的表,您需要有一个surveys_model类,允许您在该表上执行表级操作(选择,插入,更新,删除等)。

然后,您可以创建另一个模型来表示表中的单个行,名为survey_model(注意它是单数)。该类通常具有与表中的列1对1匹配的属性。在此模型中,您可以执行业务规则。例如,如果您不希望调查两次包含相同的问题,则可以添加逻辑以检查添加新问题时是否存在问题。

获取数据库记录和创建对象的过程称为“映射”,并且有自动执行此操作的软件(ORM软件)。您也可以使用自己的简单映射,因为大多数ORM有一点学习曲线。

您也可以跳过映射并直接使用db结果(用于读取/输出)。当你想写数据时,只需将数据作为参数或数组传递给表级模型。

查看 该视图包含向用户显示表单的前端代码(HTML/CSS/JS)。如果用户正在查看现有调查(例如,出于编辑目的),则必须使模型可用于查看(或至少从模型中获取一些数据)。

这里唯一的逻辑应该是为了显示的目的。例如,在一定条件下显示一个文本块,在另一个条件下显示另一个文本块(但是如果整个输出是有条件的,则应该将其分割为2个视图,并且逻辑应该移动到控制器以加载正确的看法)。

控制器 这是什么控制显示哪个视图,哪些模型被加载,哪些数据被传递到视图。您可以传递整个模型,或仅传递模型中的一些数据。

它还控制视图和模型之间的交互。例如,如果您发布表单,控制器将获取表单数据,验证它,加载模型,使用发布数据更新模型中的数据并保存模型。然后它可以显示成功或错误消息(或重定向到一个全新的页面)。

有时您会发现很难在控制器中将相关功能组合在一起,因为它的类和方法名称在路由中使用,或者您会发现控制器变得太长且难以管理。这是进来。

您可以将逻辑移出控制器并进入库。通过这种方式,您可以保持控制器的精简并将您的逻辑分组,而不用担心路由的影响。

对于全球不需要班级的功能,可以将这些放在帮手中。您可以查看内置的CI帮助程序以查看属于辅助程序文件的函数的类型。

+0

这是很棒的信息,你真的已经清除了我的一切。 – Aaron 2011-12-16 05:54:11

0

您的模型应该具有将直接与数据库交互的函数,您可以使用另一个自定义类来实现这些模型,并且控制器将调用该类中的函数。虽然你可以在你的控制器中实现代码,但是你一定想让你的可读性和可访问性。

0

使用控制器还是不要访问数据库它不是问题,刚回到mvc的概念首先,mvc是基于model(hadle处理数据库),view(查看页面)和controller控制我们所拥有的与模型和视图做的,所以使用模型我想知道或不是建立使用笨一些应用程序没有问题,只是我们要回基地的概念,如果你想用MVC方式做到这一点哟有使用模式,但如果不是也可以