我目前正在学习Codeigniter框架。我想创建一个项目,该项目具有一个前端(供用户使用)和一个后端(供管理员使用)。
我浏览了不同的文章,他们都建议使用HMVC来分隔公共和管理员/视图。我还考虑过使用相同的数据库创建两个单独的项目,一个用于公众,一个用于管理员。
我试图进行研究,以研究上述哪种方法对于潜在的大型项目而言是最佳解决方案,但是无法给出任何可持续的答案。
两个单独的CodeIgniter项目是否可以同时访问和使用同一数据库?
编辑: 客户端项目通常只会查询数据库以获取结果,而管理项目将是完整的CRUD。
如果确实建议您创建多个项目,则管理项目将在子域(即admin.example.com)上运行,而客户端项目将在example.com上运行
答案 0 :(得分:1)
有关如何配置CI的答案实际上取决于您的需求以及您的最佳感觉。在这方面,没有正确答案或“可接受”的处理方式。
当我刚开始使用Codeigniter时,我只有一个名为admin
的后端控制器子文件夹以及一个Admin
基/核心控制器,所有管理类都扩展了该文件夹,而不是{{1} }。模型/视图可以类似地组织到子文件夹中。在我看来,对于小规模应用而言,这是一个完全可以接受的解决方案。
我搬到了HMVC,发现将两者分开并没有太大的区别。尽管您可以轻松地从不同项目中拖放模块,只要它们是分离的,但是您仍然必须跳过各个步骤才能将前端/后端分开。我相信我用的是一个起点:https://github.com/jmtolibas/HMVC-CI3-with-Separate-Backend-and-Frontend
就您所说的而言,拥有2个独立的项目不一定是个坏主意。您甚至可以共享CI_Controller
中有关系统路径的修改来共享同一系统文件夹。多个数据库连接不应该成为问题。
因此,基本上,这3种方法都可以使用,由您决定最喜欢哪种方法。
如果您需要我的意见,我会在任何新项目中使用Laravel或Lumen,并且使用包,命名空间等对前端/后端进行分隔非常容易。
答案 1 :(得分:1)
使用您提到的任何方法都是有效的。这是个人喜好问题(请参阅:意见)。我已经单独使用了每种方法,或将它们与几乎相同的结果结合使用。我已经决定不使用以上任何一种。相反,我只使用一个项目,没有HMVC,没有子域,没有标准CI文件结构。我觉得保持简单最终会使构建和维护更加容易。 YMMV。
将公共用户与管理员用户区分开的是身份验证和授权(A&A)。没有适当的登录凭据和权限,没有人会进入管理控制器。无论如何,您都将需要A&A,以防止公众意外发现管理区域。 IMO,“特殊”文件结构和子域实际上使实施A&A更加困难。
根据您对该项目的截止日期,您可能希望使用CodeIgniter Version 4。这是对框架的彻底现代化改造。它仍然处于beta测试模式,但是我发现它非常稳定。他们正在努力获得发行版本。目前还没有发布的发布日期,但是所有迹象表明它会早于而不是晚。