Изменить каталог контроллера по умолчанию для Codeigniter

Я хочу иметь две папки для сохранения контроллеров 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;
}
}
}

0

Решение

Для этого вы можете использовать Hierarchical MVC (HMVC) с Codeigniter.

Для справки см. Модульные расширения — HMVC

1

Другие решения

Возможно, вы захотите взглянуть на контроллер родитель-потомок … один расширяет другой. Чтобы быть более понятным, вы можете сделать столько контроллеров, сколько захотите.

Я согласился с @Brian Gottier: «Что делает смена их местоположения?» Вы можете выполнять все, что у вас есть в руках.
Можно поиграться с крючками (Функция Крюков CodeIgniter предоставляет возможность подключаться и изменять внутреннюю работу фреймворка без взлома основных файлов. Когда CodeIgniter выполняется, он следует определенному процессу выполнения, обозначенному на странице «Поток приложений».)

Создание контроллеров «Base» / «Admin» / «Public» / «XYZ» в

приложение / ядро ​​/ MY_Controller.php

и держите остальные контроллеры в одной папке приложения / контроллера

MY_Controller — это базовое расширение базовой библиотеки. Всякий раз, когда вы создаете класс с префиксом MY_, класс CodeIgniter Loader будет загружать его после загрузки базовой библиотеки.

Все, что мы здесь сделали, — это создали базовый класс, который наследуют все наши контроллеры и «типы контроллеров». Все, что мы поместим здесь и присвоим $ this, будет доступно всему, что расширяет этот класс.

Базовые контроллеры — это хороший простой способ предоставить вам глобальные данные, логику и общий код, которые могут быть специфичны для определенной части вашего сайта. Они могут делать всякие сумасшедшие вещи, о которых я вам оставлю думать.

Надеюсь это поможет.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector