使用CodeIgniter的模型或控制器中的逻辑?

Jon*_*han 5 model-view-controller logic codeigniter

我对CodeIgniter和一般的MVC理念都比较陌生,所以我想在我养成任何坏习惯之前澄清一下.

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

  1. 用户导航到"somewebpage/register",它会加载控制器的"register"功能
  2. 控制器检查表单是否已提交 - 如果不是,则显示表单,否则,调用"用户"模型的"注册"功能
  3. 用户模型检查以查看是否已使用用户名.如果是,则返回该错误的错误代码(定义为PHP常量).
  4. 如果尚未使用用户名,则模型将注册用户并返回TRUE.
  5. 控制器收集模型的"注册"功能返回的内容,并根据错误代码显示错误页面,成功页面或数据库故障页面.

如您所见,我尝试将尽可能多的逻辑移动到模型中.我无法重新定位的唯一逻辑是表单验证,因为CodeIgniter似乎强迫您将其放入Controller中.(除非有人知道解决方法)

这是我应该使用CodeIgniter或一般的MVC开发的方式吗?

在此先感谢您的帮助.

mus*_*c80 6

正如您将发现CI灵活,并允许您以几种不同的方式组织事物.我的感觉是模型应仅保留用于直接与数据库通信的函数.我不会将它们用于一般逻辑.我明白为什么你不想用逻辑填满你的控制器.我的解决方案是创建自己的库来包含逻辑,然后从控制器调用.这里有关于如何创建自己的库的信息:http: //codeigniter.com/user_guide/general/creating_libraries.html

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

您可能也对这一系列教程感兴趣:http: //www.phpandstuff.com/articles/codeigniter-doctrine-from-scratch-day-1-install-and-setup 作者将指导您使用doctrine插件CI在您的模型和数据库之间放置一个抽象层.它非常有趣,出色地解释并使用注册/登录系统作为初始示例.