Контролери CodeIgniter, маршрутизація Views: навчайтеся за прикладом програми
У цьому підручнику ви вивчатимете такі теми.
- Маршрутизація – маршрутизація відповідає за відповідь на URL-запити. Маршрутизація зіставляє URL-адресу з попередньо визначеними маршрутами. Якщо відповідність маршруту не знайдено, CodeIgniter видає виняток для сторінки не знайдено.
- Контролери – маршрути пов’язані з контролерами. Контролери склеюють моделі та види разом. Запит даних/бізнес-логіки від моделі та повернення результатів у представленні подання. Щойно URL-адресу було зіставлено з маршрутом, вона пересилається до загальнодоступної функції контролера. Ця функція взаємодіє з джерелом даних, бізнес-логікою та повертає подання, яке відображає результати.
- думки – погляди відповідають за презентацію. Перегляд зазвичай є комбінацією HTML, CSS і JavaСценарій. Це частина, яка відповідає за відображення веб-сторінки для користувача. Як правило, дані, що відображаються, зазвичай витягуються з бази даних або будь-яких інших доступних джерел даних.
Як створити новий проект CodeIgniter
Ми будемо використовувати Composer для створення нового проекту. Я буду використовувати вбудований сервер PHP, тому немає необхідності мати додаткове програмне забезпечення, наприклад Apache. У цьому підручнику ми використовуємо Windows операційна система. Тому ми створили папку Sites на диску C. Ви можете використовувати будь-який каталог, який вам підходить.
Відкрийте командний рядок/термінал і виконайте наступну команду
cd C:\Sites
Тепер ми створимо проект CodeIgniter за допомогою Composer. Виконайте наступну команду
composer create-project CodeIgniter/framework ci-app
ТУТ,
- Наведена вище команда створює новий проект CodeIgniter версії 3, використовуючи останній стабільний випуск, тобто 3.1.9, у каталозі ci-app.
Коли наведена вище команда буде виконана, ви зможете отримати результати, подібні до наведених нижче, у терміналі
Виконайте таку команду, щоб перейти до щойно створеного каталогу проекту ci-app
cd ci-app
Тепер давайте запустимо вбудований веб-сервер PHP
php -S localhost:3000
ТУТ,
- Наведена вище команда запускає вбудований сервер PHP, що працює на порту 3000.
Відкрийте веб-браузер і перегляньте наступну URL-адресу: http://localhost:3000/
Ви отримаєте наступну сторінку
Якщо ви бачите сторінку вище, вітаємо, ви успішно встановили 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'] = FALSE; ця опція дозволяє вам перекладати тире на підкреслення. Ми поговоримо про цю опцію, коли розглянемо, як працюють маршрути в 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'); } }
ТУТ,
- Визначено ('BASEPATH') OR exit('Прямий доступ до сценарію не дозволено'); захищає від прямого доступу до класу контролера без проходження через файл index.php. Пам’ятайте, що в парадигмі MVC усі запити мають одну точку входу, а для CodeIgniter — її index.php. Цей код блокує всі запити, які не надходять через index.php
- class Welcome extends 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/
Ви повинні побачити наступне
Чудово, ми щойно успішно змінили домашню сторінку. Рухаємось далі, визначимо наш маршрут. Припустімо, що наша програма також повинна мати можливість показувати сторінку про нас.
Створіть маршрут
Відкрийте файл маршрутів 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.
Підсумки
У цьому посібнику ми розглянули три (3) основні компоненти, які складають програму CodeIgniter. Ми розглянули маршрути та способи їх визначення, контролери та способи створення методів, які відповідають на запити маршрутів, і створили прості представлення, які повертаються користувачам, коли вони запитують ресурс.