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

⚡ Умное резюме

Эта CodeВ примере Igniter создается небольшое приложение, демонстрирующее взаимодействие маршрутизации, контроллеров и представлений. Создается новый проект с помощью Composer, маршрутизация отображается. URLметоды контроллера, и каждый метод загружает представление, которое возвращает HTML в браузер.

  • 🧭 Маршрутизация: Маршруты соответствуют URL к методу контроллера и несоответствующему URL Вызывает ошибку "страница не найдена".
  • 🇧🇷 Контроллеры: Метод контроллера реагирует на маршрут, запрашивает данные и возвращает представление.
  • 🖼️ Вид: Представление объединяет HTML, CSS и JavaСкрипт для отображения результата пользователю.
  • 📦 Настройка проекта: Composer создает проект, а встроенный PHP-сервер запускает его локально.
  • 🏠 Маршрут по умолчанию: Параметр default_controller задает главную страницу, а параметр 404_override задает пользовательскую страницу ошибки.
  • Пользовательский маршрут: Маршрут, например, about-us, соответствует методу about_us контроллера Welcome.
  • 🔁 Полный поток: URL для перехода к контроллеру, затем к представлению, а затем обратно в браузер с HTML-кодом.

CodeКонтроллеры и представления Igniter

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

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

Как создать новый CodeПроект «Зажигатель»

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

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

cd C:\Sites

Теперь мы создадим CodeСоздайте проект Igniter с помощью Composer. Выполните следующую команду:

composer create-project CodeIgniter/framework ci-app

Вот:

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

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

Композитор создает новый CodeПроект «Зажигатель»

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

cd ci-app

Теперь запустите встроенный веб-сервер PHP:

php -S localhost:3000

Вот:

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

Откройте веб-браузер и перейдите по следующей ссылке. URL: http://localhost:3000/. Вы получите следующую страницу:

CodeСтандартная приветственная страница Igniter

Если вы видите страницу, показанную выше, поздравляем, установка прошла успешно. CodeвоспламенительСтраница отображается представлением, расположенным в файле application/views/welcome_message.php, а ответственный контроллер находится в файле application/controllers/Welcome.php.

CodeМаршрутизация воспламенителя

На данный момент наше приложение имеет только одну URLЭто главная страница. В этом разделе мы настроим главную страницу и создадим несколько новых элементов. URLкоторые отвечают на различные запросы.

Начнём с маршрута главной страницы. Откройте файл маршрутов по указанному ниже пути:

application/config/routes.php

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

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

Вот:

  • $route['default_controller'] = 'welcome'; определяет контроллер по умолчанию, который отвечает на URI-запросы.
  • Параметр `$route['404_override'] = ”;` позволяет определить пользовательский маршрут для ошибок 404. Ошибка 404 возникает, когда страница не найдена. CodeВ Igniter есть обработчик ошибок по умолчанию, но при желании вы можете определить свой собственный.
  • Параметр `$route['translate_uri_dashes'] = FALSE;` позволяет заменять дефисы на подчеркивания. Мы обсудим этот параметр, когда будем рассматривать работу маршрутов в [укажите язык маршрутизации]. CodeВоспламенитель.

Теперь давайте рассмотрим метод контроллера, отвечающий за отображение главной страницы, которую мы видели при открытии. 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('No direct script access allowed'); защищает от прямого доступа к классу контроллера без прохождения через файл index.php. В парадигме MVC все запросы имеют единую точку входа, что для CodeIgniter — это index.php. Этот код блокирует все запросы, которые не проходят через index.php.
  • Класс Welcome extends CI_Controller {…} определяет класс Welcome, который наследует родительский класс CI_Controller.
  • Функция `public function index()` определяет общедоступную функцию, которая вызывается по умолчанию при открытии главной страницы.
  • Функция `$this->load->view('welcome_message');` загружает представление `welcome_message`, расположенное в файле `application/views/welcome_message.php`.

Пока мы изучили только то, что поставляется в комплекте. CodeIgniter. Давайте теперь внесем некоторые изменения. Мы создадим собственную домашнюю страницу и заменим страницу по умолчанию. Создайте новый файл в папке application/views/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-код загружает CSS-фреймворк Bulma и Font Awesome с CDN и создаёт очень простой HTML-документ. Он применяет простое правило CSS из CSS-фреймворка Bulma.

Откройте следующее URL в вашем браузере: http://localhost:3000/. Вы должны увидеть следующее:

На заказ CodeГлавная страница Igniter

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

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

Откройте файл маршрутов application/config/routes.php и добавьте следующий маршрут:

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

Вот:

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

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

Теперь давайте определим метод контроллера about_us. Откройте файл application/controllers/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. Вы увидите следующую страницу:

CodeСтраница "О нас" на сайте Igniter

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

Часто задаваемые вопросы (FAQ)

Ввод маршрута отображает... URL сегментировать в контроллер и метод, например, 'welcome/about_us'. Когда это URL запрошено, CodeIgniter запускает указанный метод, который загружает и возвращает представление.

Это задает контроллер, который обрабатывает корневой каталог сайта, если не указан конкретный контроллер. URL Приведен пример. В примере «welcome» означает, что домашняя страница отображается методом index контроллера Welcome.

Нет. Для локального запуска примера достаточно встроенного PHP-сервера, запущенного командой `php -S localhost:3000`. Apache или Nginx необходимы только для развертывания в производственной среде.

Да. На основе описания страницы ИИ может написать описание маршрута, метод контроллера и соответствующее представление.ping Имена согласованы. Проверьте пути на соответствие вашим данным. CodeВерсия для игнитера.

В этом примере используется CodeIgniter 3, в котором контроллеры и представления хранятся в папке application/. CodeВ Igniter 4 была изменена структура каталогов и пространств имен, поэтому пути и синтаксис отличаются в более новых проектах.

Подведем итог этой публикации следующим образом: