Какие маршруты?
Маршруты отвечают за ответы на URL-запросы. Маршрутизация соответствует URL-адресу предварительно определенных маршрутов. Если не найдено ни одного совпадения с маршрутом, CodeIgniter создает страницу, не найденную в качестве исключения
Маршруты определяются по формуле
example.com/Controller/Method/Parameter/
ВОТ,
- Контроллер-сопоставляется с именем контроллера, который должен отвечать на URL.
- Метод — сопоставляется с методом в контроллере, который должен ответить на запрос URI.
- Параметр — этот раздел не является обязательным.
Давайте теперь посмотрим на практический пример.
Рассмотрим следующий URL
HTTP: // локальный: 3000 / контакты / редактировать / 1
ВОТ,
- Имя контроллера, отвечающего на вышеуказанный URL, — «контакты»
- Метод в контроллере класса Contacts является «редактировать»
- Метод редактирования принимает параметр. В нашем примере значение «1» передается методу.
Пример маршрута
Вот краткая справка о том, что мы планируем сделать:
- Маршрутизация — маршрутизация отвечает за ответы на URL-запросы. Маршрутизация соответствует URL-адресу предварительно определенных маршрутов. Если не найдено совпадение маршрута, CodeIgniter создает исключение для страницы, которая не найдена.
- Контроллеры — маршруты связаны с контроллерами. Контроллеры склеивают модели и виды вместе. Запрос данных / бизнес-логики из модели и возврат результатов через представление представлений. После сопоставления URL-адреса с маршрутом он перенаправляется в публичную функцию контроллера, которая взаимодействует с источником данных, бизнес-логикой и возвращает представление, отображающее результаты.
- Представления — представления отвечают за представление. Представление обычно представляет собой комбинацию HTML, CSS и JavaScript. Эта часть отвечает за отображение веб-страницы для пользователя. Как правило, отображаемые данные обычно извлекаются из базы данных или любых других доступных источников данных.
Чтобы узнать, как реализовать маршрутизаторы в реальном проекте, мы предположим, что мы создаем приложение для управления контактными данными. В следующей таблице приведены URL-адреса, с которыми вы будете работать.
S / N | URL | маршрут | контроллер | метод |
1 | / | $ Маршрут [ ‘default_controller’] | желанный | индекс |
2 | / контакты | $ Маршрут [ ‘контакты’] | контакты | индекс |
3 | / контакты / создать | $ Маршрута [ ‘создать’] | контакты | Создайте |
4 | / Контакты / редактировать / идентификатор | $ Маршрута [ ‘редактировать /: идентификатор’] | контакты | редактировать |
5 | / Контакты / обновление / идентификатор | $ Маршрута [ ‘обновление /: идентификатор’] | контакты | Обновить |
6 | / Контакты / удаление / идентификатор | $ Маршрут [ ‘удаление /: идентификатор’] | контакты | удалять |
Мы создадим маршруты нашего приложения на основе приведенной выше таблицы. Мы определили URL-адреса, маршрут CodeIgniter и сопоставили их с соответствующими именами контроллеров и методов.
Создание URL для приложения
Давайте создадим маршруты для нашего учебного проекта
Откройте приложение / config / rout.php
Измените маршруты, чтобы они соответствовали следующим
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE;
ВОТ,
- $ route [‘default_controller’] = ‘welcome’; определяет контроллер по умолчанию
- $ route [‘contacts’] = ‘contacts’; определяет маршрут контактов, который вызывает метод индекса в контроллере контактов
- $ route [‘create’] = ‘contacts / create’; определяет маршрут create, который указывает на контроллер Contacts и вызывает метод create.
- $ route [‘edit /: id’] = ‘контакты / редактировать’; определяет редактирование маршрута, которое принимает параметр id и указывает на метод редактирования контроллера контактов
- $ route [‘update /: id’] = ‘контакты / обновление’; определяет обновление маршрута, которое принимает параметр id и указывает на метод обновления класса Contacts.
- $ route [‘delete /: id’] = ‘контакты / удалить’; определяет удаление маршрута, которое принимает параметр id и указывает на метод удаления контроллера Contacts.
В следующей таблице показаны соответствующие URL-адреса, полученные из указанных выше маршрутов.
S / N | маршрут | Соответствующий URL |
1 | $ route [‘default_controller’] = ‘welcome’; | HTTP: // локальный: 3000 |
2 | $ route [‘contacts’] = ‘contacts’; | Http: // Localhost: 3000 / контакты |
3 | $ route [‘create’] = ‘contacts / create’; | Http: // Localhost: 3000 / контакты / создать |
4 | $ route [‘edit /: id’] = ‘контакты / редактировать’; | HTTP: // локальный: 3000 / контакты / редактировать / 1 |
5 | $ route [‘update /: id’] = ‘контакты / обновление’; | HTTP: // локальный: 3000 / контакты / обновление / 1 |
6 | $ route [‘delete /: id’] = ‘контакты / удалить’; | HTTP: // локальный: 3000 / контакты / удаление / 1 |
Теперь, когда мы рассмотрели маршруты, давайте создадим контроллер контактов, который будет реагировать на действия, указанные в маршрутах.
Создайте новый файл Contacts.php в приложении / controllers / Contacts.php
Добавьте следующий код
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Contacts extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper('url'); } public function index() { $this->load->view('header'); $this->load->view('contacts/index'); $this->load->view('footer'); } public function create() { $this->load->view('header'); $this->load->view('contacts/create'); $this->load->view('footer'); } public function edit($id) { $this->load->view('header'); $this->load->view('contacts/edit'); $this->load->view('footer'); } public function update($id) { $this->load->view('header'); $this->load->view('contacts/update'); $this->load->view('footer'); } public function delete($id) { $this->load->view('header'); $this->load->view('contacts/delete'); $this->load->view('footer'); } }
ВОТ,
- Класс контактов extends CI_Controller {..} определяет наш класс контроллера и расширяет класс CI_Controller, который поставляется с CodeIgniter.
- Методы, определенные выше, соответствуют маршрутам, которые мы определили, а те с параметрами, как delete, принимают параметр $ id
- Обратите внимание, что функции загружают три (3) представления. Верхний и нижний колонтитулы являются общими для всех методов. Среднее представление очень специфично для действия, то есть функция удаления для удаления создает представление для создания функции и т. Д. Еще одна важная вещь, которую следует помнить, это то, что представления загружаются из подкаталога контактов.
Взгляды
Нам еще нужно сделать еще один шаг, прежде чем мы сможем проверить наши маршруты в веб-браузере. Давайте создадим соответствующие представления для вышеуказанных методов контроллера.
На следующем рисунке показано, как будет выглядеть ваше приложение
Создайте следующие файлы в приложении / views
- header.php — этот файл будет содержать меню приложения контактов и заголовок
- footer.php — эти файлы будут содержать нижний колонтитул приложения.
Создайте новый каталог контактов в приложении view / views / contacts
Создайте следующие файлы внутри
index.php create.php edit.php
Ваша файловая структура должна быть следующей
Давайте теперь обновим header.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>CodeIgniter Routes</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css"> <script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script> </head> <body> <section class="section"> <div class="container"> <h1 class="title">CI Contacts v1</h1> <h2 class="subtitle">CodeIgniter contacts management app</h2> <div class="columns"> <div class="column is-one-quarter"> <aside class="menu"> <p class="menu-label"> General </p> <ul class="menu-list"> <li><a class="is-active" href="#">Dashboard</a></li> <li><a href="/<?=site_url('contacts/create')?>">New Contact</a></li> <li><a href="/<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li> </ul> <p class="menu-label"> Settings </p> <ul class="menu-list"> <li><a href="#">SMS</a></li> <li><a href="#">Email</a></li> </ul> </aside> </div>
ВОТ,
- Приведенный выше HTML-код загружает бирманский CSS из сети CDN.
Ниже приведен код для footer.php
</div> </div> </section> </body> </html>
Давайте теперь добавим код для файлов index.php, edit.php и create.php для контактов.
index.php <div class="column">Index content goes here...</div> edit.php <div class="column">Edit content goes here...</div> create.php <div class="column">Create content goes here...</div>
Вы можете сохранить все внесенные изменения.
Откройте следующий URL в вашем веб-браузере
HTTP: // локальный: 3000 / контакты /
Вы можете нажать на ссылку Новый контакт и Изменить контакт и посмотреть, что произойдет
Резюме
В этом руководстве мы узнали, как создавать маршруты в CodeIgniter для реального примера приложения, и рассмотрели основы маршрутизации, которые необходимо знать, чтобы начать разработку CodeIgniter.