Я хочу иметь две папки для сохранения контроллеров codeigniter:
/application/controllers
/application/buckets
Я параноик, и хочу разделить два типа моих контроллеров.
В стандартных папках структура приложения была такой:
/application/buckets/example/index.php
/application/buckets/example2/index.php
/application/buckets/example3/index.php
¿Может быть, расширение класса маршрутизатора?
Рабочий пример:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
Extended the core Router class to allow for sub-sub-folders in the controllers directory.
*/
class App_Router extends CI_Router {
function __construct()
{
parent::__construct();
}
function _validate_request($segments)
{
if (count($segments) == 0)
{
return $segments;
}
if (file_exists(APPPATH.'buckets/'.$segments[0].'/index.php'))
{$this->set_directory(APPPATH.'buckets/'.$segments[0]);
$this->set_class(ucfirst($segments[0]));
$this->set_method(isset($segments[1]) ? $segments[1] : 'index');
return $segments;
}
}
}
Для этого вы можете использовать Hierarchical MVC (HMVC) с Codeigniter.
Для справки см. Модульные расширения — HMVC
Возможно, вы захотите взглянуть на контроллер родитель-потомок … один расширяет другой. Чтобы быть более понятным, вы можете сделать столько контроллеров, сколько захотите.
Я согласился с @Brian Gottier: «Что делает смена их местоположения?» Вы можете выполнять все, что у вас есть в руках.
Можно поиграться с крючками (Функция Крюков CodeIgniter предоставляет возможность подключаться и изменять внутреннюю работу фреймворка без взлома основных файлов. Когда CodeIgniter выполняется, он следует определенному процессу выполнения, обозначенному на странице «Поток приложений».)
Создание контроллеров «Base» / «Admin» / «Public» / «XYZ» в
приложение / ядро / MY_Controller.php
и держите остальные контроллеры в одной папке приложения / контроллера
MY_Controller — это базовое расширение базовой библиотеки. Всякий раз, когда вы создаете класс с префиксом MY_, класс CodeIgniter Loader будет загружать его после загрузки базовой библиотеки.
Все, что мы здесь сделали, — это создали базовый класс, который наследуют все наши контроллеры и «типы контроллеров». Все, что мы поместим здесь и присвоим $ this, будет доступно всему, что расширяет этот класс.
Базовые контроллеры — это хороший простой способ предоставить вам глобальные данные, логику и общий код, которые могут быть специфичны для определенной части вашего сайта. Они могут делать всякие сумасшедшие вещи, о которых я вам оставлю думать.
Надеюсь это поможет.