我总是使用该模型来或多或少地存储和执行数据库查询。我听说过胖模型,瘦控制器概念。
我现在设置模型的方式会导致控制器中出现大量垃圾,例如验证表单,格式化数据。表单验证,文件上传和数据格式化是否属于控制器或模型?
我意识到这个问题是主观的,应该创造一些好的讨论而不是具体的答案。
答案 0 :(得分:3)
表单验证绝对应该是模型的一部分。我通常将每个表单表示为一个模型,并将其传递给已清理的post / get paramaters。然后,模型可以根据输入采取任何必要的操作,并使用属性(可选地使用getter)来指示成功或失败。在psuedo代码中,您希望它看起来像:
class Controller
{
function action()
{
$input = new Input();
$form = new FormModel($input);
if ($errors = $form->errors())
{
//load the appropriate view for the errors
}
else
{
//load the appropriate view for success with an optional redirect
}
}
答案 1 :(得分:3)
你有两条主要道路要走。薄控制器/脂肪模型或脂肪控制器/薄型号。基本上是你把大部分的互动。我更喜欢在模型中保留代码的主要部分。这样,代码几乎可以在每个控制器和/或lib中使用。如果代码保留在控制器上,那么在其他控制器中使用它很困难(但并非不可能)。
事情lije验证和其他常见任务应该在lib或helper中。你可以制作一套“工人”(这是我给他们的名字)来完成繁重的工作。此外,CI还有很多来自CI团队和社区的现成的库和助手。在维基周围乱七八糟地找到可用的丰富信息。
希望这会有所帮助 VX
答案 2 :(得分:0)
模型是与数据交互的(通常是数据库)。控制器使用模型访问数据。