Создание панели управления в CodeIgniter

Насколько мне известно, на данный момент, существует три основных подхода к созданию панелей управления при использовании CodeIgniter в качестве фреймворка. В данной статье я приведу примеры реализации каждого из этих подхода, а также плюсы и минусы их использования. В данной статье я рассматриваю лишь общие подходы и не планирую в дальнейшем писать статью на тему «Как реализовать систему управления правами доступа».

Вариант №1 — «Несколько приложений»

Используя CodeIgniter вы можете достаточно легко организовать работу нескольких приложений использующих единую установку фреймворка. Данный метод реализуется простым копированием и переименованием index.php
/ 
applications / 
frontend/ 
controllers/ 
home.php 
blog.php 
comments.php 
models/ 
blog_model.php 
comment_model.php 
views/ 
blogs/ 
index.php 
view.php 
comment/ 
view.php 
index.php 
backend/ 
config/ 
controllers/ 
dashboard.php 
blog.php 
comments.php 
models/ 
blog_model.php 
comment_model.php 
views/ 
blogs/ 
index.php 
form.php 
comment/ 
index.php 
dashboard.php 
login.php 
system/ 
index.php 
admin/ index.php
Как вы можете заметить, в данном примере мы просто создаем папку admin и копируем в нее index.php. Для того, чтобы каждый index.php использовал свое приложение, нам следует произвести следующие изменения в файлах:
  • index.php $application_folder = «applications/frontend»;
  • admin/index.php $application_folder = «applications/backend»;
Данный способ, особенно удобен для сайтов, где бэкэнд и фронтэнд оперируют разными объектами и нет необходимости использовать общие модели/библиотеки/помощники. В любом случае при использовании данного подхода вам будет достаточно сложно избежать дублирования кода, т.к. достаточно сложно представить себе сайт, где для бэкэнда и фронтэнда используются разные модели. Хотя, все, конечно, зависит от специфики сайта.

Вариант №2 — «Поддиректории»

Данный метод не требует особых настроек CodeIgniter и многие новые пользователи CI предпочитают именно его.
/ 
application/ 
config/ 
controllers/ 
admin/ 
blog.php 
comments.php 
blog.php 
comments.php 
models/ 
blog_model.php 
comments_model.php 
views/ 
admin/ 
blog/ 
index.php 
form.php 
comments/ 
index.php 
form.php 
dashboard.php 
login.php 
blog/ 
index.php 
view.php 
comments/ 
view.php 
system/ 
index.php
Мы сохраняем изначальную MVC структуру, предлагаемую фреймворком, используя поддиректории для реализации необходимой нам URL-схемы. Преимущество данного подхода заключается в возможности совместного использования моделей/библиотек/помощников как бэкэндом, так и фронтэндом. Если же у вас вдруг возникает отделить модели бэкэнда от моделей фронтэнда, вы всегда можете создать поддиректорию admin в директории models и размещать их в ней. Основным недостатком данного метода является то, что при расширении сайта, структура каталогов и файлов будет усложнятся все больше и больше. Уже в примере выше, вы можете заметить, что у нас существует несколько папок для работы с блогом и комментариями, в то время, как по логике вещей, нам бы хватило и одной…

Вариант №3 — «Модули»

Для того, чтобы реализовать управление всем контентом в одной папке, нам стоит применить подход HMVC. По сути данный подход реализует модульность в CodeIgniter. На данный момент существует две реализации данного подхода — HMVC и Matchbox. Лично я предпочитаю последний, но, признаюсь честно, я просто не пробовал использовать HMVC. Интересным является то, что для нашего примера большинство начинающих пользователей попытается создать модули — «блог», «комментарии» и «панель управления». Это кажется мне достаточно странным, особенно учитывая причину по которой мы используем модульный подход. В своих проектах я использую единственный admin.php в папке controllers, отвечающий за вход, выход и отображения главной панели управления. Панели же администрирования каждого отдельного модуля вынесены в admin.php внутри папки контроллеров этого модуля. Для организации «красивой» URL-схемы я использую роутинг.
/ 
application/ 
config/ 
controllers/ 
admin.php 
modules/ 
blog/ 
controllers/ 
admin.php 
blog.php 
models/ 
blog_model.php 
views/ 
admin/ 
index.php 
form.php 
comments/ 
controllers/ 
admin.php 
comments.php 
models/ 
comment_model.php 
views/ 
admin/ 
index.php 
form.php 
views/ 
admin/ 
dashboard.php 
login.php 
system/ 
index.php
Для перехода в панель администрирования блога, при использовании структуры приведенной выше, сам следует просто перейти по адресу http://example.com/blog/admin. Если же вас не устраивает такой URL, вы можете достаточно просто сделать его выдержанным в едином стиле, добавив следующие строки в router.php:
$route['admin/([a-zA-Z_-]+)/(:any)'] = '$1/admin/$2';
$route['admin/login'] = 'admin/login';
$route['admin/logout'] = 'admin/logout';
$route['admin/([a-zA-Z_-]+)'] = '$1/admin/index';
$route['admin'] = 'admin';
Применяя данный метод мы храним контроллеры бэкэнда и фронтэнда вместе, позволяя использовать общие модели/библиотеки/помощники, но при этом не «размазывая» все эти файлы по папке приложения. Ну и, конечно, красивые URL :-)

Итог

Если бэкэнд и фронтэнд разрабатываемого приложения не используют общих ресурсов и дублирование кода вас не пугает, то вариант №1 — ваш выбор. Если у вас небольшой сайт, который не планируется расширять и заигрывания с HMVC не стоят свеч, стоит использовать метод №2. Для больших же проектов сложно найти что-то более удобное, чем применение HMVC. Данная статья является вольным переводом статьи «Create an Admin panel with CodeIgniter» авторства Phil Sturgeon.

Также мы хотим предложить ознакомиться с нашими услугами, среди которых:

Разработка сайтов
PLAY

 

Просчитать стоимость

*Ваше имя:
*Телефон:
E-mail:
*Услуга:
*Запросы: