Маршруты 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 — «edit».
  • Метод редактирования принимает параметр. В нашем примере методу передается значение «1».

Вот краткая предыстория того, что мы планируем сделать:

  • Фрезеровка – маршрутизация отвечает за ответ на запросы URL. CodeIgniter Routing сопоставляет URL-адрес с предварительно определенными маршрутами. Если совпадение маршрута не обнаружено, CodeIgniter выдает исключение «страница не найдена».
  • Контроллеры – маршруты привязаны к контроллерам. Контроллеры объединяют модели и представления. Запрос данных/бизнес-логики из модели и возврат результатов через представление представлений. Как только URL-адрес сопоставлен с маршрутом в CodeIgniter, он перенаправляется в общедоступную функцию контроллера, которая взаимодействует с источником данных, бизнес-логикой и возвращает представление, отображающее результаты.
  • Виды – представления отвечают за представление. Представление обычно представляет собой комбинацию HTML, CSS и JavaСценарий. Эта часть отвечает за отображение веб-страницы пользователю. Обычно отображаемые данные обычно извлекаются из базы данных или любых других доступных источников данных.

Чтобы узнать, как реализовать маршрутизаторы в реальном проекте, предположим, что мы создаем приложение для управления контактными данными. В следующей таблице показаны URL-адреса, с которыми будет работать.

S / N URL Маршрут Контроллер Способ доставки
1 / $route['default_controller'] Добро пожаловать индекс
2 / контакты $route['контакты'] Контакты индекс
3 /контакты/создать $route['создать'] Контакты Создайте
4 /контакты/редактировать/идентификатор $route['edit/:id'] Контакты отредактировать
5 /контакты/обновление/идентификатор $route['update/:id'] Контакты обновление
6 /контакты/удалить/идентификатор $route['delete/:id'] Контакты удалять

Мы создадим маршруты нашего приложения на основе приведенной выше таблицы. Мы определили URL-адреса, маршрут CodeIgniter и сопоставили их с соответствующими именами контроллеров и методов.

Создание маршрутизации URL-адресов для приложения

Давайте создадим маршрутизацию URL-адресов CodeIgniter для нашего учебного проекта.

Откройте приложение/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'] = 'добро пожаловать'; определяет приветствие контроллера по умолчанию.
  • $route['контакты'] = 'контакты'; определяет маршрут контактов, который вызывает метод индекса в контроллере контактов
  • $route['create'] = 'контакты/создать'; определяет маршрут create, который указывает на контроллер контактов и вызывает метод 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['контакты'] = 'контакты'; 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

Теперь, когда мы рассмотрели маршруты, давайте создадим контроллер контактов, который будет реагировать на действия, указанные в маршрутах.

Создайте новый файл маршрута в 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');
    }
}

ВОТ,

  • Контакты класса расширяют 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.

Создайте новый каталог контактов в представлении 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-код загружает 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.