Просто откройте или создайте core/MY_Controller.php
, создайте класс MY_Controller
и пусть он расширяет MX_Controller
, затем в том же файле создайте другие базовые контроллеры и сделайте так, чтобы они расширяли MY_Controller
.Вот пример, который вы можете скопировать / вставить, чтобы начать:
<?php defined('BASEPATH') OR exit('No direct script access.');
class MY_Controller extends MX_Controller {
public function __construct()
{
// do some stuff here that affects all controllers
}
}
class Frontend_Controller extends MY_Controller {
public function __construct()
{
parent::__construct();
}
}
class Backend_Controller extends MY_Controller {
public function __construct()
{
parent::__construct();
// Check admin login, etc.
}
}
/* end file application/core/MY_Controller.php */
Что касается "нескольких тем", не уверен, что вам нужно.Stylesheets?HTML-шаблоны?Вам нужно, чтобы пользователи переключали их, или вы будете делать это вручную?Вам нужно обнаружить мобильные устройства и соответственно изменить тему?Все вышеперечисленное?«Лучший» способ будет зависеть от вашей реализации.
Я думаю о создании 2 библиотек, расширяемых из MY_Controller.php, и их автоматической загрузке.Будет ли это работать?
Не уверен, зачем тебе это нужно или хочешь ... просто не делай этого.Вы должны расширять эти классы только другими контроллерами.
О темах я хочу иметь несколько тем для представлений, например: - /views/theme1/view_files.php - /views/theme2/view_files.php О js / css / images я могудоговоритьсяВначале я исправлю тему, но позже я могу позволить пользователю выбрать.С помощью MVC я могу помещать темы в подпапки / views /, как указано выше, но в HMVC я должен найти другой способ упорядочить их по темам, потому что папки просмотра разделены (я хочу, чтобы все файлы представления одной и той же темы были только в 1папка) ..
Поскольку это слишком широкий вопрос для решения, и вы, кажется, еще ничего не пробовали, я дам вам минимум пример:
class MY_Controller extends MX_Controller {
public function __construct()
{
// do some stuff here that affects all controllers
$this->theme = 'theme1'; // matches your directory name in /views/themes/
}
}
С вашего контроллера:
$this->load->view('themes/'.$this->theme.'/my_view_file');
Используя HMVC, файл всегда будет искать в текущем модуле, а затем вернуться к каталогам приложений по умолчанию, еслиэто не существуетЕсли по какой-то причине вам нужно быть явным, вы можете сказать, что перед именем пути стоит указывать имя модуля (например, для перекрестной загрузки ресурсов между модулями).Пример:
// From "blog" module
$this->load->view('events/index');
// We just loaded `modules/events/views/index` from the blog module
В любом случае, это не полное решение, но, надеюсь, оно поможет вам начать с идеей.Есть миллионы способов сделать это, вот две библиотеки шаблонов, которые уже поддерживают темы: