【发布时间】:2011-10-10 22:16:38
【问题描述】:
首先,很抱歉这篇文章给您带来的任何便利,因为这是我第一次在这里发布问题,我需要更多时间来适应这个问题。
第一季度。我想为 FrontEnd 和 BackEnd 创建 2 个“主控制器”,如下所示:
- MY_Controller 扩展了 CI_Controller
- FrontEnd 扩展 MY_Controller,所有前端控制器都将扩展 FrontEnd。
- BackEnd 扩展 MY_Controller,所有后端控制器都将扩展 BackEnd。
使用 HMVC (MX) 的最佳方法是什么?
感谢@Wesley Murch 提出将 3 个类 MY_Controller、Frontend、Backend 放入 MY_Controller.php 的想法,但我认为将每个类放在一个 php 文件中更好(更干净)。还是我错了?我正在考虑创建一个这样的结构:
- ./core/MY_Controller.php(扩展 MX_Controller)
- ./libraries/Backend.php(扩展 MY_Controller)
- ./libraries/Frontend.php(扩展 MY_Controller)
- 在 autoload.php 中自动加载 Backend 和 Frontend
- 所有前端控制器都将扩展前端(例如:
class Blog extends Frontend) - 所有后端控制器都将扩展 Backend(例如:
class Admin extends Backend)
如果不将后端/前端控制器中的多行代码添加到 include_once 或 require_once 中,这是否可行:./libraries/Backend.php 或 ./libraries/Backend.php?
第二季度。如何使用 HMVC 实现多个主题? 例如,在 MVC 中,我们可以有 2 个主题结构如下:
- ./application/views/theme1/view_files.php
- ./application/views/theme2/view_files.php
但在 HMVC 中,视图文件夹位于单独的文件夹中,如果我想实现多个主题,通常我必须这样做:
- ./application/modules/module1/views/theme1/view_files.php
- ./application/modules/module1/views/theme2/view_files.php
- ./application/modules/module2/views/theme1/view_files.php
- ./application/modules/module2/views/theme2/view_files.php
这不是我想要的,因为我想将一个主题的所有视图文件放在一个文件夹中,然后,如果我想创建一个新主题,我只需要复制一个主题文件夹。但我想知道如何在不破坏 HMVC 模型的情况下做到这一点(因为据我所知,在 HMVC 模型中,模型、视图、控制器必须位于一个模块文件夹中 - 至少使用 CI)。这就是我陷入的冲突。
【问题讨论】:
标签: codeigniter themes frontend backend hmvc