模型中的逻辑或带有 CodeIgniter 的控制器中的逻辑? [已关闭]

问题描述 投票:0回答:1

我有一个可以注册的应用程序。用户。目前流程是这样的:

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

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

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

model-view-controller codeigniter logic
1个回答
7
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.