Контроллер — это простой файл класса. Как следует из названия, он контролирует все приложение по URI.
Создание контроллера
Сначала перейдите в папку application / controllers . Там вы найдете два файла: index.html и Welcome.php . Эти файлы поставляются с CodeIgniter.
Сохраните эти файлы, как они есть. Создайте новый файл по тому же пути с именем « Test.php ». Напишите следующий код в этом файле —
<?php class Test extends CI_Controller { public function index() { echo "Hello World!"; } } ?>
Класс Test расширяет встроенный класс с именем CI_Controller . Этот класс необходимо расширять всякий раз, когда вы хотите создать свой собственный класс Controller.
Вызов контроллера
Вышеуказанный контроллер может быть вызван URI следующим образом:
http://www.your-domain.com/index.php/test
Обратите внимание на слово « test » в указанном выше URI после index.php. Это указывает на имя класса контроллера. Поскольку мы дали имя контроллера « Test », мы пишем « test » после index.php. Имя класса должно начинаться с заглавной буквы, но нам нужно писать строчную букву, когда мы вызываем этот контроллер по URI. Общий синтаксис для вызова контроллера выглядит следующим образом:
http://www.your-domain.com/index.php/controller/method-name
Создание и вызов метода конструктора
Давайте изменим приведенный выше класс и создадим другой метод с именем «hello».
<?php class Test extends CI_Controller { public function index() { echo "This is default function."; } public function hello() { echo "This is hello function."; } } ?>
Мы можем выполнить вышеуказанный контроллер следующими тремя способами:
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
После посещения первого URI в браузере мы получаем вывод, как показано на рисунке ниже. Как видите, мы получили выходные данные метода « index », хотя мы и не передали имя метода URI. Мы использовали только имя контроллера в URI. В таких ситуациях CodeIgniter вызывает метод по умолчанию « index ».
Посещая второй URI в браузере, мы получаем такой же вывод, как показано на картинке выше. Здесь мы передали имя метода после имени контроллера в URI. Поскольку имя метода « index », мы получаем тот же результат.
Посещая третий URI в браузере, мы получаем вывод, как показано на рисунке ниже. Как видите, мы получаем выходные данные метода « hello », потому что передали « hello » в качестве имени метода после имени контроллера « test » в URI.
Очки для запоминания
-
Имя класса контроллера должно начинаться с заглавной буквы.
-
Контроллер должен вызываться строчными буквами.
-
Не используйте то же имя метода, что и ваш родительский класс, так как он переопределит функциональность родительского класса.
Имя класса контроллера должно начинаться с заглавной буквы.
Контроллер должен вызываться строчными буквами.
Не используйте то же имя метода, что и ваш родительский класс, так как он переопределит функциональность родительского класса.
Просмотры
Это может быть простая или сложная веб-страница, которую может вызывать контроллер. Веб-страница может содержать заголовок, нижний колонтитул, боковую панель и т. Д. Вид не может быть вызван напрямую. Давайте создадим простой вид. Создайте новый файл в application / views с именем « test.php » и скопируйте приведенный ниже код в этот файл.
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter View Example</title> </head> <body> CodeIgniter View Example </body> </html>
Измените код файла application / controllers / test.php, как показано ниже.
Загрузка представления
Представление может быть загружено с помощью следующего синтаксиса —
$this->load->view('name');
Где имя — это файл представления, который отображается. Если вы запланировали сохранить файл представления в каком-либо каталоге, вы можете использовать следующий синтаксис:
$this->load->view('directory-name/name');
Нет необходимости указывать расширение как php, если не используется что-то кроме .php.
Метод index () вызывает метод view и передает «test» в качестве аргумента методу view (), потому что мы сохранили html-кодировку в файле « test.php » в application / views / test.php .
<?php class Test extends CI_Controller { public function index() { $this->load->view('test'); } } ?>
Вот вывод приведенного выше кода —
Следующая блок-схема иллюстрирует, как все работает —
модели
Модели классов предназначены для работы с информацией в базе данных. Например, если вы используете CodeIgniter для управления пользователями в вашем приложении, у вас должен быть класс модели, который содержит функции для вставки, удаления, обновления и извлечения данных ваших пользователей.
Создание класса модели
Классы моделей хранятся в каталоге application / models . Следующий код показывает, как создать класс модели в CodeIgniter.
<?php Class Model_name extends CI_Model { Public function __construct() { parent::__construct(); } } ?>
Где Model_name — это имя класса модели, который вы хотите указать. Каждый класс модели должен наследовать класс CI_Model CodeIgniter. Первая буква модельного класса должна быть заглавной. Ниже приведен код класса модели пользователя.
<?php Class User_model extends CI_Model { Public function __construct() { parent::__construct(); } } ?>
Вышеупомянутый класс модели должен быть сохранен как User_model.php. Имя класса и имя файла должны быть одинаковыми.
Модель загрузки
Модель можно вызвать в контроллере. Следующий код может быть использован для загрузки любой модели.
$this->load->model('model_name');
Где имя_модели — это название модели, которая будет загружена. После загрузки модели вы можете просто вызвать ее метод, как показано ниже.
$this->model_name->method();
Автозагрузка моделей
Могут быть ситуации, когда вам понадобится некоторый класс модели для всего вашего приложения. В таких ситуациях лучше, если мы загрузим его.
/* | --------------------------------------------------------------- | Auto-Load Models | --------------------------------------------------------------- | Prototype: | | $autoload['model'] = array('first_model', 'second_model'); | | You can also supply an alternative model name to be assigned | in the controller: | | $autoload['model'] = array('first_model' => 'first'); */ $autoload['model'] = array();
Как показано на рисунке выше, передайте имя модели в массиве, который вы хотите загрузить, и он будет автоматически загружен, пока система находится в состоянии инициализации и доступна для всего приложения.
Помощники
Как следует из названия, это поможет вам построить вашу систему. Он разделен на небольшие функции для обслуживания различных функций. В CodeIgniter доступно несколько помощников, которые перечислены в таблице ниже. Мы тоже можем создавать своих собственных помощников.
Помощники обычно хранятся в вашей папке system / helpers или в каталоге application / helpers . Пользовательские помощники хранятся в каталоге application / helpers, а системные помощники хранятся в каталоге system / helpers . CodeIgniter будет искать сначала в вашем каталоге application / helpers . Если каталог не существует или указанный помощник не найден, CodeIgniter вместо этого заглянет в ваш глобальный каталог system / helpers / . Каждый помощник, будь то пользовательский или системный, должен быть загружен перед использованием.
SN | Имя и описание помощника |
---|---|
1 |
Array Helper Файл Array Helper содержит функции, помогающие работать с массивами. |
2 |
CAPTCHA Helper Файл CAPTCHA Helper содержит функции, которые помогают создавать изображения CAPTCHA. |
3 |
Cookie Helper Файл Cookie Helper содержит функции, помогающие работать с файлами cookie. |
4 |
Date Helper Файл Date Helper содержит функции, которые помогут вам работать с датами. |
5 |
Справочник Помощник Файл вспомогательного каталога содержит функции, помогающие работать с каталогами. |
6 |
Скачать Helper Download Helper позволяет загружать данные на рабочий стол. |
7 |
Email Helper Email Helper предоставляет некоторые вспомогательные функции для работы с электронной почтой. Для более надежного решения электронной почты см. Класс электронной почты CodeIgniter. |
8 |
File Helper Файл File Helper содержит функции, помогающие работать с файлами. |
9 |
Форма Помощник Файл Form Helper содержит функции, помогающие работать с формами. |
10 |
HTML Helper Файл HTML Helper содержит функции, помогающие работать с HTML. |
11 |
Inflector Helper Файл Inflector Helper содержит функции, которые позволяют вам изменять слова на множественное число, единственное число, регистр верблюдов и т. Д. |
12 |
Language Helper Файл Language Helper содержит функции, помогающие работать с языковыми файлами. |
13 |
Помощник по номерам Файл Number Helper содержит функции, которые помогут вам работать с числовыми данными. |
14 |
Path Helper Файл Path Helper содержит функции, которые позволяют вам работать с путями файлов на сервере. |
15 |
Помощник по безопасности Файл Security Helper содержит функции, связанные с безопасностью. |
16 |
Smiley Helper Файл Smiley Helper содержит функции, которые позволяют управлять смайликами (смайликами). |
17 |
Струнный Помощник Файл String Helper содержит функции, помогающие работать со строками. |
18 |
Текстовый Помощник Файл Text Helper содержит функции, помогающие работать с текстом. |
19 |
Типография Помощник Файл Typography Helper содержит функции, которые помогают форматировать текст семантически релевантными способами. |
20 |
URL Helper Файл URL Helper содержит функции, помогающие работать с URL. |
21 |
XML Helper Файл XML Helper содержит функции, помогающие работать с данными XML. |
Array Helper
Файл Array Helper содержит функции, помогающие работать с массивами.
CAPTCHA Helper
Файл CAPTCHA Helper содержит функции, которые помогают создавать изображения CAPTCHA.
Cookie Helper
Файл Cookie Helper содержит функции, помогающие работать с файлами cookie.
Date Helper
Файл Date Helper содержит функции, которые помогут вам работать с датами.
Справочник Помощник
Файл вспомогательного каталога содержит функции, помогающие работать с каталогами.
Скачать Helper
Download Helper позволяет загружать данные на рабочий стол.
Email Helper
Email Helper предоставляет некоторые вспомогательные функции для работы с электронной почтой. Для более надежного решения электронной почты см. Класс электронной почты CodeIgniter.
File Helper
Файл File Helper содержит функции, помогающие работать с файлами.
Форма Помощник
Файл Form Helper содержит функции, помогающие работать с формами.
HTML Helper
Файл HTML Helper содержит функции, помогающие работать с HTML.
Inflector Helper
Файл Inflector Helper содержит функции, которые позволяют вам изменять слова на множественное число, единственное число, регистр верблюдов и т. Д.
Language Helper
Файл Language Helper содержит функции, помогающие работать с языковыми файлами.
Помощник по номерам
Файл Number Helper содержит функции, которые помогут вам работать с числовыми данными.
Path Helper
Файл Path Helper содержит функции, которые позволяют вам работать с путями файлов на сервере.
Помощник по безопасности
Файл Security Helper содержит функции, связанные с безопасностью.
Smiley Helper
Файл Smiley Helper содержит функции, которые позволяют управлять смайликами (смайликами).
Струнный Помощник
Файл String Helper содержит функции, помогающие работать со строками.
Текстовый Помощник
Файл Text Helper содержит функции, помогающие работать с текстом.
Типография Помощник
Файл Typography Helper содержит функции, которые помогают форматировать текст семантически релевантными способами.
URL Helper
Файл URL Helper содержит функции, помогающие работать с URL.
XML Helper
Файл XML Helper содержит функции, помогающие работать с данными XML.
Загрузка помощника
Помощник может быть загружен, как показано ниже —
$this->load->helper('name');
Где имя это имя помощника. Например, если вы хотите загрузить URL Helper, его можно загрузить как —
$this->load->helper('url');
маршрутизация
CodeIgniter имеет удобную систему маршрутизации URI, так что вы можете легко перенаправить URL. Как правило, существует взаимно-однозначное отношение между строкой URL и соответствующим классом / методом контроллера. Сегменты в URI обычно следуют этому шаблону —
your-domain.com/class/method/id/
-
Первый сегмент представляет класс контроллера, который должен быть вызван.
-
Второй сегмент представляет функцию класса или метод, который должен быть вызван.
-
Третий и любые дополнительные сегменты представляют идентификатор и любые переменные, которые будут переданы в контроллер.
Первый сегмент представляет класс контроллера, который должен быть вызван.
Второй сегмент представляет функцию класса или метод, который должен быть вызван.
Третий и любые дополнительные сегменты представляют идентификатор и любые переменные, которые будут переданы в контроллер.
В некоторых ситуациях вы можете изменить этот механизм маршрутизации по умолчанию. CodeIgniter предоставляет средство, с помощью которого вы можете установить свои собственные правила маршрутизации.
Настройте правила маршрутизации
Существует определенный файл, где вы можете обрабатывать все это. Файл находится по адресу application / config / rout.php. Вы найдете массив $ route, в котором вы можете настроить свои правила маршрутизации. Ключ в массиве $ route решит, что направлять, а значение — куда направить. В CodeIgniter есть три зарезервированных маршрута.
SN | Зарезервированные маршруты и описание |
---|---|
1 |
$ маршрут [ ‘default_controller’] Этот маршрут указывает, какой класс контроллера должен быть загружен, если URI не содержит данных, что будет иметь место, когда люди загружают ваш корневой URL. Рекомендуется использовать маршрут по умолчанию, в противном случае по умолчанию появится страница 404. Здесь мы можем установить домашнюю страницу сайта, чтобы она загружалась по умолчанию. |
2 |
$ маршрут [ ‘404_override’] Этот маршрут указывает, какой класс контроллера должен быть загружен, если запрошенный контроллер не найден. Это переопределит страницу ошибки 404 по умолчанию. Это не повлияет на функцию show_404 () , которая продолжит загрузку файла error_404.php по умолчанию в application / views / errors / error_404.php . |
3 |
$ маршрутные [ »] translate_uri_dashes Как видно из логического значения, это не совсем маршрут. Эта опция позволяет вам автоматически заменять тире (‘-‘) на подчеркивания в сегментах URI контроллера и метода, тем самым сохраняя дополнительные записи маршрута, если вам нужно это сделать. Это необходимо, потому что дефис не является допустимым символом класса или имени метода и вызовет фатальную ошибку, если вы попытаетесь его использовать. |
$ маршрут [ ‘default_controller’]
Этот маршрут указывает, какой класс контроллера должен быть загружен, если URI не содержит данных, что будет иметь место, когда люди загружают ваш корневой URL. Рекомендуется использовать маршрут по умолчанию, в противном случае по умолчанию появится страница 404. Здесь мы можем установить домашнюю страницу сайта, чтобы она загружалась по умолчанию.
$ маршрут [ ‘404_override’]
Этот маршрут указывает, какой класс контроллера должен быть загружен, если запрошенный контроллер не найден. Это переопределит страницу ошибки 404 по умолчанию. Это не повлияет на функцию show_404 () , которая продолжит загрузку файла error_404.php по умолчанию в application / views / errors / error_404.php .
$ маршрутные [ »] translate_uri_dashes
Как видно из логического значения, это не совсем маршрут. Эта опция позволяет вам автоматически заменять тире (‘-‘) на подчеркивания в сегментах URI контроллера и метода, тем самым сохраняя дополнительные записи маршрута, если вам нужно это сделать. Это необходимо, потому что дефис не является допустимым символом класса или имени метода и вызовет фатальную ошибку, если вы попытаетесь его использовать.
Маршруты можно настраивать с помощью подстановочных знаков или с помощью регулярных выражений, но имейте в виду, что эти настраиваемые правила для маршрутизации должны следовать за зарезервированными правилами.
Wildcards
Мы можем использовать два подстановочных знака, как описано ниже —
-
(: num) — будет соответствовать сегменту, содержащему только цифры.
-
(: любой) — будет соответствовать сегменту, содержащему любой символ.
(: num) — будет соответствовать сегменту, содержащему только цифры.
(: любой) — будет соответствовать сегменту, содержащему любой символ.
пример
$route['product/:num']='catalog/product_lookup';
В приведенном выше примере, если буквальное слово «product» найдено в первом сегменте URL, а число найдено во втором сегменте, вместо него используются класс «catalog» и метод «product_lookup».
Регулярные выражения
Как и подстановочные знаки, мы также можем использовать регулярные выражения в ключевой части массива $ route . Если какой-либо URI совпадает с регулярным выражением, он будет перенаправлен на часть значения, заданную в массиве $ route.
пример
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
В приведенном выше примере URI, аналогичный products / shoes / 123, вместо этого вызовет класс контроллера « shoes » и метод « id_123 ».