CodeIgniter模型应该包含哪些内容?

时间:2010-08-09 01:52:20

标签: php codeigniter coding-style

我总是使用该模型来或多或少地存储和执行数据库查询。我听说过胖模型,瘦控制器概念。

我现在设置模型的方式会导致控制器中出现大量垃圾,例如验证表单,格式化数据。表单验证,文件上传和数据格式化是否属于控制器或模型?

我意识到这个问题是主观的,应该创造一些好的讨论而不是具体的答案。

3 个答案:

答案 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)

模型是与数据交互的(通常是数据库)。控制器使用模型访问数据。