Маршрути CodeIgniter: маршрутизація URL-адрес із прикладом
Що таке маршрути CodeIgniter?
Маршрути відповідають за відповідь на запити URL. Маршрутизація зіставляє URL-адресу з попередньо визначеними маршрутами. Якщо відповідність маршруту не знайдено, CodeIgniter видає виняток для сторінки не знайдено.
Маршрути в CodeIgniter визначаються за наведеною нижче формулою:
example.com/Controller/Method/Parameter/
ТУТ,
- Контролер - зіставляється з назвою контролера, який має відповідати на URL-адресу.
- Метод – зіставляється з методом у контролері, який має відповідати на запит URI.
- Параметр – цей розділ необов’язковий.
Приклад маршрутів CodeIgniter
Давайте тепер розглянемо практичну маршрутизацію URL CodeIgniter приклад.
Розглянемо наступну URL-адресу http://localhost:3000/contacts/edit/1
ТУТ,
- Ім’я контролера, який відповідає на наведену вище URL-адресу, – «контакти»
- Метод у класі контролера Contacts — «редагувати»
- Метод редагування приймає параметр. У нашому прикладі методу передається значення «1».
Ось короткий опис того, що ми плануємо зробити:
- Маршрутизація – маршрутизація відповідає за відповідь на URL-запити. CodeIgniter Routing зіставляє URL-адресу з попередньо визначеними маршрутами. Якщо збіг маршруту не знайдено, CodeIgniter викидає виняток «Сторінка не знайдена».
- Контролери – маршрути пов’язані з контролерами. Контролери склеюють моделі та види разом. Запит даних/бізнес-логіки від моделі та повернення результатів через представлення представлень. Щойно URL-адресу було зіставлено з Route у CodeIgniter, вона пересилається до загальнодоступної функції контролера, яка взаємодіє з джерелом даних, бізнес-логікою та повертає представлення, яке відображає результати.
- думки – погляди відповідають за презентацію. Перегляд зазвичай є комбінацією HTML, CSS і JavaScript. Це частина, яка відповідає за відображення веб-сторінки для користувача. Як правило, дані, що відображаються, зазвичай витягуються з бази даних або будь-яких інших доступних джерел даних.
Щоб навчитися впроваджувати маршрутизатори в реальному проекті, припустимо, що ми створюємо програму для керування контактними даними. У наведеній нижче таблиці показано URL-адреси, з якими працюватиме.
S / N | URL | Маршрут | контролер | Метод |
---|---|---|---|---|
1 | / | $route['default_controller'] | ласкаво просимо | індекс |
2 | /контакти | $route['contacts'] | Контакти | індекс |
3 | /контакти/створити | $route['create'] | Контакти | створювати |
4 | /contacts/edit/id | $route['edit/:id'] | Контакти | редагувати |
5 | /contacts/update/id | $route['update/:id'] | Контакти | оновлення |
6 | /contacts/delete/id | $route['delete/:id'] | Контакти | видаляти |
Ми створимо маршрути нашої програми на основі таблиці вище. Ми визначили URL-адреси, маршрут CodeIgniter і зіставили їх із відповідними іменами контролера та методу.
Створення URL-маршрутизації для програми
Давайте створимо URL-маршрутизацію CodeIgniter для нашого навчального проекту
Відкрийте application/config/routes.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'] = 'контакти'; визначає маршрут контактів, який викликає метод індексу в контролері контактів
- $route['create'] = 'контакти/створити'; визначає маршрут create, який вказує на контролер Contacts і викликає метод create.
- $route['edit/:id'] = 'контакти/редагувати'; визначає редагування маршруту, який приймає параметр id і вказує на метод редагування контролера контактів
- $route['update/:id'] = 'контакти/оновлення'; визначає оновлення маршруту, яке приймає параметр id і вказує на метод оновлення класу Contacts.
- $route['delete/:id'] = 'контакти/видалити'; визначає маршрут видалення, який приймає параметр id і вказує на метод видалення контролера контактів.
У наведеній нижче таблиці показано відповідні URL-адреси, отримані з визначених вище маршрутів
S / N | Маршрут | Відповідний URL |
---|---|---|
1 | $route['default_controller'] = 'вітаємо'; | http://localhost:3000 |
2 | $route['contacts'] = 'контакти'; | http://localhost:3000/contacts |
3 | $route['create'] = 'контакти/створити'; | http://localhost:3000/contacts/create |
4 | $route['edit/:id'] = 'контакти/редагувати'; | http://localhost:3000/contacts/edit/1 |
5 | $route['update/:id'] = 'контакти/оновлення'; | http://localhost:3000/contacts/update/1 |
6 | $route['delete/:id'] = 'контакти/видалити'; | http://localhost:3000/contacts/delete/1 |
Тепер, коли ми розглянули маршрути, давайте створимо контролер контактів, який реагуватиме на дії, зазначені в маршрутах.
Створіть новий файл Route у CodeIgniter як Contacts.php у application/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'); } }
ТУТ,
- Class contacts extends CI_Controller {..} визначає наш клас контролера та розширює клас CI_Controller, який постачається з CodeIgniter.
- Методи, визначені вище, відповідають маршрутам, які ми визначили, а ті з такими параметрами, як delete, приймають параметр $id
- Зверніть увагу, що функції завантажують три (3) представлення. Верхній і нижній колонтитули загальні для всіх методів. Середнє подання є дуже специфічним для дії, тобто видалення для функції видалення, створення подання для створення функції тощо. Ще одна важлива річ, про яку слід пам’ятати, це те, що подання завантажуються з підкаталогу контактів.
Перегляди CodeIgniter
Нам ще потрібно зробити ще один крок, перш ніж ми зможемо перевірити наші маршрути CodeIgniter з параметрами у веб-браузері. Давайте створимо відповідні представлення для наведених вище методів контролера.
На наступному зображенні показано, як виглядатиме ваша програма
Створіть наступні файли в додатку/переглядах
header.php – this file will contain contacts app menu and the header footer.php – this files will contain the application footer.
Створіть новий каталог контактів у Views Application/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-код завантажує Burma 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://localhost:3000/contacts/
Ви можете натиснути посилання Новий контакт і Редагувати контакт і подивитися, що станеться
Підсумки
- Маршрути в CI відповідають за відповідь на запити URL. Маршрутизація зіставляє URL-адресу з попередньо визначеними маршрутами. Якщо відповідність маршруту CodeIgniter не знайдено, CodeIgniter створює виняток для сторінки не знайдено.
- CI Routing відповідає за відповідь на запити URL-адрес. Маршрутизація зіставляє URL-адресу з попередньо визначеними маршрутами.
- Контролери склеюють моделі та види разом. Запит даних/бізнес-логіки від моделі та повернення результатів через представлення представлень.
- За презентацію відповідають погляди. Перегляд зазвичай є комбінацією HTML, CSS і JavaСценарій.
- У цьому підручнику ми навчилися створювати маршрути в CodeIgniter для реального прикладу програми та розповіли про основи маршрутизації, які потрібно знати, щоб розпочати розробку CodeIgniter.