Codeigniter 独立的前端和后端

Codeigniter seperate front-end and back-end

我目前正在自学 Codeigniter 框架。我想创建一个项目,它有一个前端(供用户使用)和一个后端(供管理员使用)。

我看过不同的文章,他们都建议使用 HMVC 来分隔 public 和管理 controllers/views。我还考虑过创建两个单独的项目,一个用于 public,一个用于管理员,两者都使用相同的数据库。

我曾尝试研究上述方法中的哪一种是潜在大型项目的最佳解决方案,但无法得出任何可持续的答案。

两个独立的 CodeIgniter 项目是否可以同时访问和使用同一个数据库?

编辑: 客户端项目主要只是查询数据库的结果,而管理项目将是完整的 CRUD。

如果确实建议创建多个项目,则管理项目将在子域上 运行,即 admin.example.com,而客户端项目将是 运行在 example.com

关于如何配置 CI 的答案实际上取决于您的需要和您认为最好的。在这方面没有正确答案或"acceptable"做事方式。

当我第一次开始使用 Codeigniter 时,我只有一个名为 admin 的后端控制器子文件夹以及一个 Admin base/core 控制器,所有管理员 类 扩展而不是 CI_Controller。 Models/views 可以类似地组织到子文件夹中。在我看来,对于小规模应用程序来说,这是一个完全可以接受的解决方案。

我转而使用 HMVC,发现就将它们分开而言,它确实没有太大区别。尽管您可以轻松地拖放来自不同项目的模块,只要它们是解耦的,但您仍然必须跳过箍才能使 front/back 端分开。我相信我用这是一个起点:https://github.com/jmtolibas/HMVC-CI3-with-Separate-Backend-and-Frontend

就您提到的而言,拥有 2 个独立的项目未必是个坏主意。您甚至可以共享同一个系统文件夹,并在 index.php 中修改系统路径。多个数据库连接应该不是问题。

所以基本上,所有 3 种方法都有效,由您决定您最喜欢使用哪一种。

如果你想要我的意见,我会在任何新项目上使用 Laravel 或 Lumen,并且 front/back 端的分离很容易通过包、命名空间等来实现

使用您提到的任何方法都是有效的。这是个人喜好的问题(阅读:意见)。我已经单独使用了每一个,并结合了或多或少相同的结果。我已经决定使用上面的 none。相反,我使用单个项目,没有 HMVC,没有子域,标准 CI 文件结构。我觉得保持简单最终会使其更易于构建和维护。 YMMV.

public 用户与管理员用户的区别是 身份验证 授权 (A&A)。没有适当的登录凭据和权限,任何人都无法进入管理控制器。无论如何,您将需要 A&A 以防止 public 意外发现管理区域。 IMO,"special" 文件结构和子域实际上使实施 A&A 变得更加困难。

根据此项目的截止日期,您可能希望使用 CodeIgniter Version 4。这是对框架的彻底现代改造。它仍处于 Beta 测试模式,但我发现它非常稳定。他们正在努力获得发布版本。目前还没有公布发布日期,但所有迹象都表明它会更早而不是更晚。