Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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 模型中的逻辑还是带有CodeIgniter的控制器中的逻辑?_Model View Controller_Codeigniter_Logic - Fatal编程技术网

Model view controller 模型中的逻辑还是带有CodeIgniter的控制器中的逻辑?

Model view controller 模型中的逻辑还是带有CodeIgniter的控制器中的逻辑?,model-view-controller,codeigniter,logic,Model View Controller,Codeigniter,Logic,我对CodeIgniter和MVC哲学一般来说是比较陌生的,所以在我养成任何坏习惯之前,我试图澄清这一点 我有一个注册的应用程序。用户。目前,流程如下所示: 用户导航到“somewebpage/register”,它加载控制器的“register”功能 控制器检查表单是否已提交-如果未提交,则向他们显示表单,否则,调用“用户”模型的“注册”函数 用户模型检查用户名是否已被使用。如果是,则返回该错误的错误代码(定义为PHP常量) 如果用户名还没有被使用,模型将注册用户并返回TRUE 控制器收集模型

我对CodeIgniter和MVC哲学一般来说是比较陌生的,所以在我养成任何坏习惯之前,我试图澄清这一点

我有一个注册的应用程序。用户。目前,流程如下所示:

  • 用户导航到“somewebpage/register”,它加载控制器的“register”功能
  • 控制器检查表单是否已提交-如果未提交,则向他们显示表单,否则,调用“用户”模型的“注册”函数
  • 用户模型检查用户名是否已被使用。如果是,则返回该错误的错误代码(定义为PHP常量)
  • 如果用户名还没有被使用,模型将注册用户并返回TRUE
  • 控制器收集模型的“注册”函数返回的内容,并根据错误代码显示错误页、成功页或数据库失败页
  • 正如您所看到的,我尝试将尽可能多的逻辑移到模型中。我唯一无法重新定位的逻辑是表单验证,因为CodeIgniter似乎迫使您将其放入控制器。(除非有人知道如何解决)

    这是我应该用CodeIgniter开发的方式,还是通常用MVC开发的方式


    提前感谢您的帮助。

    您会发现CI非常灵活,允许您以多种不同的方式组织工作。我的感觉是,模型应该只保留用于直接与数据库通信的功能。我不把它们用于一般逻辑。然而,我理解为什么你也不想用逻辑填满你的控制器。我的解决方案是创建自己的库来包含逻辑,然后从控制器调用逻辑。此处提供了有关如何创建自己的库的信息:

    对于用户身份验证,我创建了一个名为auth_library.php的库,其中包含登录、注册等控制器使用的函数。以同样的方式,您可以创建一个auth_模型,其中包含与数据库连接的函数

    您可能还对本系列教程感兴趣:
    作者将带领您使用带有CI的条令插件,它在您的模型和db之间放置了一个抽象层。它非常有趣,解释精辟,并使用注册/登录系统作为初始示例

    MVC中的模型应该具有与域模型相同的逻辑,但是没有任何东西阻止您将其划分为不同的层。感谢您的帮助,musoNic80和airmanx86!你们澄清了这个令人困惑的问题。我有点担心——没有人回答谢谢@airmanx86,musoNic80我发现您的讨论很有用,但我有一个问题。根据从控制器传递到模型的数据,在模型中应用逻辑是一种好方法。比如,如果一个变量为空,我想运行这个查询,否则就运行这个查询。这是一个好方法吗?