Прежде всего, приносим извинения за любое неудобство, вызванное этим сообщением, потому что я впервые публикую здесь вопрос, и мне нужно больше времени, чтобы привыкнуть к этому.
Q1. Я хочу создать 2 «главных контроллера» для FrontEnd и BackEnd следующим образом:
- 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)
- Автоматическая загрузка Backend и Frontend в autoload.php
- Все внешние контроллеры будут расширять Внешний интерфейс (например,
class Blog extends Frontend
). - Все серверные контроллеры будут расширять Backend (например,
class Admin extends Backend
).
Будет ли это работать без добавления еще одной строки кода в контроллеры бэкенда/интерфейса для include_once или require_once: ./libraries/Backend.php или < strong>./libraries/Backend.php?
Q2. Как реализовать несколько тем с помощью 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 Models, Views, Controllers должны быть в одной папке модуля - по крайней мере, с CI). Это конфликт, на котором я застрял.