Модульное расширение для codeigniter

Представляю вашему вниманию модульное расширение фреймворка codeigniter, которое позволит создавать модули с неограниченным количеством контроллеров.
Модуль разбит на 2 части: frontend - то, что увидит пользователь и backend - то, что увидит администратор.
Данное расширение не являеться абсолютно готовым, а служит лишь конструктором, на основе которого вы сможете строить универсальные модульные приложения.

Здесь не реализована система шаблонов для модулей; отображения вызываются из папки system/application/views.
Но при большом желании вы сможете исправить этот недостаток подключив smarty и сдлеав библиотеку для модульных шаблонов.

Контроллер для фронтенда вызываем двумя способами:

http://codeigniter/index.php/welcome/hello/

либо

http://codeigniter/index.php/frontend/welcome/hello/

а контроллер для бекенда:

http://codeigniter/index.php/backend/welcome/hello/

Советую написать руль для htaccess, чтобы упрятать index.php.

Процесс установки:

1) Копируем файл MY_Router.php в system/application/libraries/

2) Удаляем папку system/application/controllers.

3) Создаем папку system/application/modules. В этой папке будут находиться модули проекта.

Структура такова:

    + modules [обязательное имя папки]
        + модуль 1
            + controllers [обязательное имя папки]
                + backend [обязательное имя папки]
                    + контроллер 1
                + frontend [обязательное имя папки]
                    + контроллер 1
                    + контроллер 2
                    + контроллер 3                    
        + модуль 2
            + controllers [обязательное имя папки]
                + backend [обязательное имя папки]   
                    + контроллер 1
                    + контроллер 2
                + frontend [обязательное имя папки]
                    + контроллер 1
                    + контроллер 2
                    + контроллер 3
        
4) В файле system/codeigniter/CodeIgniter.php ищем строку 236:
    call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
и меняем ее на:
    call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 4));

Мы изменили порядковый номер аргументов, так как массив $URI->rsegments вырос у нас на 2 значения:

$URI->rsegments[] - side
$URI->rsegments[] - module
$URI->rsegments[] - controller
$URI->rsegments[] - method
$URI->rsegments[] - arg1
...............
$URI->rsegments[] - argn

вместо:

$URI->rsegments[] - controller
$URI->rsegments[] - method
$URI->rsegments[] - arg1
...............
$URI->rsegments[] - argn

Скачать MY_Router.php

Интересное

Quest Pistols. белая стрекоза любви

Комментарии

  • Игорь
    16.04.2010 в 08:11

    Спасибо. Как раз то, что нужно. Заработало с первого толчка!

    ответить

Чтобы оставлять комментарии, авторизируйтесь

Войти через OpenID

рейтинг-1+-
Go!
Популярные
Полезные ссылки
Наверх