Маршрути 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 з параметрами у веб-браузері. Давайте створимо відповідні представлення для наведених вище методів контролера.

На наступному зображенні показано, як виглядатиме ваша програма

Перегляди 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

Структура файлу має бути такою

Перегляди CodeIgniter

Давайте тепер оновимо 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.