CodeМаршрути запалювання: URL Маршрутизація з прикладом

⚡ Розумний підсумок

CodeЗапалювач URL Карти маршрутів a URL до контролера та методу з необов'язковим параметром. Маршрути визначені в routes.php, тому чистий URL подібно до contacts/edit/1, запускає метод edit контролера Contacts, який завантажує подання заголовка, вмісту та нижнього колонтитула.

  • 🧭 Основне правило: Маршрут відповідає URL до контролера, методу та додаткового параметра.
  • 📐 формула: Шаблон — Контролер/Метод/Параметр, визначений у application/config/routes.php.
  • ???? Маршрут за замовчуванням: default_controller встановлює домашню сторінку, коли ні URL задано сегмент.
  • 🔢 Параметри: Маршрут, такий як edit/:id, передає значення id у метод контролера.
  • 🎛️ Контролер: Кожен маршрут відповідає методу, який завантажує відповідні представлення.
  • 🖼️ Спільні перегляди: Види верхнього та нижнього колонтитулів використовуються повторно, з окремим середнім виглядом для кожної дії.
  • ❓ 404 Обробка: Неперевершений URL викликає виняток «сторінку не знайдено», який можна перевизначити за допомогою коду 404_override.

CodeМаршрути запалювання

Які CodeМаршрути запалювання?

Маршрути відповідають за реагування на URL запити. Маршрутизація відповідає URL до попередньо визначених маршрутів. Якщо збіг маршруту не знайдено, CodeIgniter викидає виняток «сторінку не знайдено».

Маршрути в CodeЗапальники визначаються за формулою нижче:

example.com/Controller/Method/Parameter/

тут:

  • Контролер зіставлено з ім'ям контролера, який має відповідати на URL.
  • Метод відображається на метод у контролері, який має відповідати на запит URI.
  • Параметр – цей розділ необов’язковий.

CodeПриклад маршрутів запалювання

Давайте тепер розглянемо практичний приклад URL маршрутизація в CodeЗапалювач приклад. Розглянемо наступне URL: http://localhost:3000/contacts/edit/1

тут:

  • Ім'я контролера, який відповідає на вищезазначене URL це «контакти».
  • Метод у класі контролера Contacts — «edit».
  • Метод редагування приймає параметр. У нашому прикладі методу передається значення «1».

Ось короткий опис того, що ми плануємо зробити:

  • Маршрутизація – маршрутизація відповідає URL запити. CodeМаршрутування запалювача відповідає URL до попередньо визначених маршрутів. Якщо збіг маршруту не знайдено, CodeIgniter викидає виняток «сторінку не знайдено».
  • Контролери – маршрути пов’язані з контролерами. Контролери об’єднують моделі та представлення. Вони запитують дані та бізнес-логіку з моделі та повертають результати через представлення представлення. Після URL було зіставлено з маршрутом, він пересилається до публічної функції контролера, яка взаємодіє з джерелом даних та бізнес-логікою і повертає представлення.
  • думки – погляди відповідають за презентацію. Перегляд зазвичай є комбінацією 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'] Контакти видаляти

Ми створимо маршрути нашої програми на основі таблиці вище. Ми визначили URLs, CodeМаршрут Igniter та зіставив їх з відповідними іменами контролерів та методів.

створення URL Маршрутизація для застосунку

Давайте створимо CodeЗапалювач URL маршрутизація для нашого навчального проєкту. Відкрийте 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'] = 'contacts'; визначає маршрут контактів, який викликає метод index у контролері Contacts.
  • $route['create'] = 'contacts/create'; визначає метод create маршруту, який вказує на контролер Contacts та викликає метод create.
  • $route['edit/:id'] = 'contacts/edit'; визначає редагування маршруту, яке приймає параметр id та вказує на метод edit контролера Contacts.
  • $route['update/:id'] = 'contacts/update'; визначає оновлення маршруту, яке приймає параметр id та вказує на метод update класу Contacts.
  • $route['delete/:id'] = 'contacts/delete'; визначає маршрут видалення, який приймає параметр id та вказує на метод видалення контролера Contacts.

У наступній таблиці наведено відповідні 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

Тепер, коли ми розглянули маршрути, давайте створимо контролер Contacts, який реагуватиме на дії, зазначені в маршрутах. Створіть новий файл 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');
}
}

тут:

  • клас Contacts extends CI_Controller {…} визначає наш клас контролера та розширює клас CI_Controller, який постачається з CodeЗапальник.
  • Методи, визначені вище, відповідають маршрутам, які ми визначили, а ті, що мають параметри типу delete, приймають параметр $id.
  • Зверніть увагу, що функції завантажують три представлення. Заголовок і нижній колонтитул є спільними для всіх методів. Середнє представлення є специфічним для дії, тобто delete для функції delete та create для функції create. Ще одна важлива річ, яку слід пам’ятати, це те, що представлення завантажуються з підкаталогу contacts.

CodeПерегляди запалювача

Нам потрібен ще один крок, перш ніж ми зможемо перевірити наші CodeМаршрути запальника з параметрами у веббраузері. Створимо представлення, що відповідають вищезазначеним методам контролера. На наступному зображенні показано, як виглядатиме застосунок:

CodeПопередній перегляд програми контактів запалювача

Створіть такі файли в application/views:

header.php – this file will contain the contacts app menu and the header
footer.php – this file will contain the application footer

Створіть новий каталог контактів усередині application/views (application/views/contacts) та створіть у ньому такі файли:

index.php
create.php
edit.php

Структура вашого файлу має бути такою:

CodeСтруктура файлу переглядів Igniter

Давайте тепер оновимо файл 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 Bulma з 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/Ви можете натиснути на посилання «Новий контакт» та «Редагувати контакт» і подивитися, що станеться.

Поширені запитання

Визначте маршрут за допомогою заповнювача, такого як edit/:id, та прийміть відповідний аргумент у методі контролера, наприклад, edit($id). CodeЗапальник проходить повз URL сегмент у цей аргумент.

CodeIgniter викидає виняток page-not-found та показує сторінку 404. Ви можете вказати 404_override на власному контролері, щоб замість цього відобразити власну сторінку помилки.

site_url() створює повний URL з вашого base_url та маршруту, щоб посилання продовжували працювати, якщо сайт переміщується або базовий шлях змінюється. Йому потрібно URL помічника, який буде завантажено першим.

Так. З назви ресурсу, такого як контакти, штучний інтелект може створювати індекс, редагувати, оновлювати та видаляти маршрути за допомогою відповідних методів контролера, дотримуючись REST-конвенцій. Підтвердьте назви параметрів.

Окреме завантаження верхнього та нижнього колонтитулів дозволяє уникнути повторення одного й того ж макета в кожному перегляді сторінки. Кожен метод завантажує спільний верхній колонтитул, певний перегляд вмісту, а потім спільний нижній колонтитул.

Підсумуйте цей пост за допомогою: