Что такое HMVC
Проблемы MVC привели к разработке HMVC. Это эволюция структуры MVC. Представлена еще в 2000 году.
Инструкция применения модели HMVC
Коротко установка и использование
1) скачиваем библиотеку HMVC,
2) ложим в папку library
3) перемещаем контроллеры, отображения и модели в новую папку modules, структура показана на картинке.
4) вызов методов из контроллера: modules::run('login/is_logged_in');
5) вывод: echo modules::run('login/cp');?>
каждая триада действует независимо друг от друга, и может обращаться к другим триадам через контроллер.
Почему надо использовать HMVC?
ее преимущества:
- модульность
- организация каталогов
- повторное использование
- расширяемость
настройка HMVC в Codeigniter
В уроках по подключению библиотек можно найти дополнительную информацию, тем не менее начнем без вступления
1) Установка codeigniter
необходимо установить сервер, и codeigniter
выносим папку application в корень, так чтобы было две папки system и application. Это обычная практика, целью которой является отделение приложения от системного каркаса.
в файле application/config/config.php
$config['base_url'] = http://example.com/;
Скачивание и установка расширения HMVC
эти файлы нужно положить в папку application/library
далее создаем файловую структуру
примерно так:
application/modules/welcome/controllers
тоесть перемещаем контроллер application/controllers/welcome.php в подпапки modules
application/modules/welcome/controllers/welcome.php – здесь скрипт контроллера
application/modules/welcome/views/ – здесь будут лежать отображения
в принципе уже должно все работать.
Пример сайта с авторизацией
есть
два контроллера
login, site
есть одна модель membership_model
отображения для ввода логина и вывода сообщений login_form, signup_form, signup_successful
отображения для вывода области доступной авторизованным пользователям logged_in_area (через контроллер и метод site/members_area)
в контроллере site сначала проверяется сессия, и вызывается die если не в сессии.
проверку сессии я вынес в модель, но это должна быть общая модель.
ниже я опишу куда вынести функцию is_logged_in()
переносим все в описанной выше структуру:
контроллер LOGIN
- hmvcExample/application/modules/login/controllers/login.php
- hmvcExample/application/modules/login/models/membership_model.php
- hmvcExample/application/modules/login/views/login_form.php
- hmvcExample/application/modules/login/views/signup_form.php
- hmvcExample/application/modules/login/views/signup_successful.php
контроллер SITE:
- hmvcExample/application/modules/site/controllers/site.php
- hmvcExample/application/modules/site/views/logged_in_area.php
Шаблоны будут при этом лежать в корневой папке views
- /css/*
- /img/*
- /application/views/includes/*
шаблоны лежат в папке includes
выше лежат файлы которые вставляются в шаблон.
например logged_in_area не содержит заголовка. это только тело которое будет вставлено между тегами <body>
вывод такой:
$data[‘content’]=’logged_in_arrea’;
$this->load->view(‘mycontroller/includes/template’,$data);
mycontroller – папка в которой все отображения для одного контроллера
includes – содержит несколько файлов для составления шаблона которые загружаются в один файл template.php
создаем базу
- CREATE TABLE `ci_series`.`membership` (
- `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Комментарии
Отправить комментарий