Учебники

6) Маршруты CodeIgniter

Какие маршруты?

Маршруты отвечают за ответы на 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.