Контроллеры CodeIgniter, маршрутизация представлений: обучение на примере приложения

В этом уроке вы изучите следующие темы.

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

Как создать новый проект CodeIgniter

Мы будем использовать Composer для создания нового проекта. Я буду использовать встроенный сервер PHP, поэтому нет необходимости иметь дополнительное программное обеспечение, такое как Apache. В этом уроке мы используем Windows Операционная система. Поэтому мы создали папку «Сайты» на диске С. Вы можете использовать любую подходящую вам директорию.

Откройте командную строку/терминал и выполните следующую команду

cd C:\Sites

Теперь мы создадим проект CodeIgniter с помощью Composer. Запустите следующую команду

composer create-project CodeIgniter/framework ci-app

ВОТ,

  • Приведенная выше команда создает новый проект CodeIgniter версии 3, используя последнюю стабильную версию, то есть 3.1.9, в каталог ci-app.

Когда приведенная выше команда завершится, вы сможете получить в терминале результаты, аналогичные следующим:

Создайте новый проект CodeIgniter.

Выполните следующую команду, чтобы перейти к вновь созданному каталогу проекта ci-app.

cd ci-app

Давайте теперь запустим встроенный веб-сервер PHP.

 php -S localhost:3000

ВОТ,

  • Приведенная выше команда запускает встроенный PHP-сервер, работающий на порту 3000.

Откройте веб-браузер и перейдите по следующему URL-адресу: http://localhost:3000/

Вы получите следующую страницу

Создайте новый проект CodeIgniter.

Если вы видите приведенную выше страницу, поздравляем, вы успешно установили CodeIgniter.

Как вы можете прочитать на приведенной выше веб-странице, отображаемая выше страница отображается с помощью представления, расположенного в application/views/welcome_message.php, а ответственный контроллер находится в application/controllers/Welcome.php.

CodeIgniter Маршрутизация

На данный момент наше приложение имеет только один URL-адрес — домашнюю страницу. В этом разделе мы настроим домашний раздел. Мы создадим несколько новых URL-адресов, которые будут отвечать на различные запросы.

Начнем с маршрута домашней страницы

Откройте файл маршрутов, указанный по пути ниже.

application/config/routes.php

Вы должны увидеть следующий контент

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

ВОТ,

  • $route['default_controller'] = 'добро пожаловать'; определяет контроллер по умолчанию, который отвечает на запросы URI
  • $route['404_override'] = ”; этот маршрут позволяет вам определить собственный маршрут для ошибок 404. Ошибка 404 возникает, когда страница не найдена. CodeIgniter имеет обработчик ошибки по умолчанию, но вы можете определить свой собственный, если хотите.
  • $route['translate_uri_dashes'] = ЛОЖЬ; эта опция позволяет переводить тире в подчеркивания. Мы поговорим об этой опции, когда посмотрим, как работают маршруты в CodeIgniter.

Давайте теперь посмотрим на метод контроллера, отвечающий за отображение домашней страницы, которую мы увидели, когда открыли URL-адрес. http://localhost:3000/ в веб-браузере.

Откройте следующий файл

application/controllers/Welcome.php

Вы должны увидеть следующий код

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

	public function index()
	{
		$this->load->view('welcome_message');
	}
}

ВОТ,

  • Defined('BASEPATH') OR exit('Прямой доступ к скрипту запрещен'); защищает от прямого доступа к классу контроллера без прохождения файла index.php. Помните, в парадигме MVC все запросы имеют одну точку входа, а для CodeIgniter — ее index.php. Этот код блокирует все запросы, которые не проходят через index.php.
  • class Welcome расширяет CI_Controller {…} определяет класс Welcome, который расширяет родительский класс CI_Controller
  • публичная функция index() определяет публичную функцию, которая вызывается по умолчанию при открытии домашней страницы.
  • $this->load->view('welcome_message'); эта строка загружает представление Welcome_message. Файл Welcome_message находится в каталоге application/views/welcome_message.php.

Пока что мы только изучили то, что поставляется с CodeIgniter «из коробки», давайте теперь попробуем внести некоторые изменения. Мы создадим нашу домашнюю страницу и заменим страницу по умолчанию.

Создайте новый файл в application/views/home.php.

Добавьте следующий код в home.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Hello CodeIgniter!</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">
                    CodeIgniter Hello World
                </h1>
            </div>
        </section>
    </body>
</html>

ВОТ,

Приведенный выше HTML-код загружает структуру Burma SSS и шрифт из сети CDN, создавая очень простой HTML-документ. Он применяет очень простое правило CSS из платформы CSS Burma.

Откройте следующий URL-адрес в своем браузере: http://localhost:3000/

Вы должны увидеть следующее

CodeIgniter Маршрутизация

Отлично, мы только что успешно изменили домашнюю страницу. Идем дальше, давайте определим наш маршрут. Предположим, что наше приложение также должно иметь возможность отображать страницу о нас.

Создать маршрут

Откройте файл маршрутов application/config.routes.php.

Добавьте следующий маршрут

$route['about-us'] = 'welcome/about_us';

ВОТ,

  • Когда посетитель посещает URL-адрес /about-us, мы приказываем CodeIgniter найти контроллер Welcome и выполнить метод about_us.

Создать контроллер

Давайте теперь определим метод контроллера о нас.

Откройте приложение/контроллеры/Welcome.php.

Добавьте следующий метод

public function about_us(){
            $this->load->view('about_us');
        }

ВОТ,

  • Приведенный выше код определяет функцию about_us и загружает представление about_us.

Создать представление

Давайте теперь создадим представление, на которое мы только что ссылались в разделе выше.

Создайте новый файл about_us.php в application/views/about_us.php.

Добавьте следующий код

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>About CodeIgniter!</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">
                    About us yap...                
                </h1>
            </div>
        </section>
    </body>
</html>

Все готово, откройте следующий URL-адрес в своем веб-браузере: http://localhost:3000/index.php/about-us

Вы увидите следующую страницу

Создайте представление в CodeIgniter

Если вы видите приведенную выше страницу, поздравляем, вы успешно создали простое приложение в CodeIgniter.

Резюме

В этом руководстве мы рассмотрели три (3) основных компонента, составляющих приложение CodeIgniter. Мы рассмотрели маршруты и способы их определения, контроллеры и способы создания методов, отвечающих на запросы маршрутов, и создали простые представления, которые возвращаются пользователям, когда они запрашивают ресурс.