Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.3

Search User Guide

# Урок — статичные страницы

Примечание: Этот урок предполагает, что вы загрузили CodeIgniter и установили фреймворк в вашем окружении разработки.

Для начала давайте установим контроллер для отображения статичных страниц. Контроллер это просто класс, который помогает делегировать работу. Это клей вашего веб-приложения.

Например, когда происходит такой вызов: `http://example.com/news/latest/10` мы можем представить, что есть контроллер, называемый News. Вызываемый метод контроллера новостей — latest();. Работа метода новостей заключается в том, чтобы получать по 10 элементов новостей, и выводить их на странице. Очень часто в MVC, вы можете увидеть паттерны URL, которые соответствуют `http://example.com/[controller-class]/[controller-method]/[arguments]` Схема URL может быть более комплексной, она может изменяться. Но на текущий момент это все, что нам пока надо знать.

Создайте файл в application/controllers/pages.php со следующим кодом.

<?php class Pages extends CI_Controller { public function view($page = 'home') { } }

Вы создали класс с названием Pages, с методом отображения, который приниамет один аргумент $page. Класс страниц расширяет класс CI_Controller. Это означает, что новый класс страниц получит доступ к методам и переменным, определенным в классе CI_Controller (system/core/Controller.php).

Контроллер — это то, что будет центром каждого запроса к вашему веб-приложени. В технических обсуждениях CodeIgniter, часто ссылаются на суперобъект. Как любой другой класс PHP, вы ссылаетесь на него из вашего контроллера через $this. Ссылка на $this позволяет вам загружать библиотеки, отображения и обычные команды фреймворка.

Сейчас вы создали ваш первый метод, и теперь настало время сделать основные шаблоны страницы. Мы создадим два отображения (шаблоны страниц), которые будут представлять шапку и подвал нашей страницы.

Создайте шапку в application/views/templates/header.php и добавьте следующий код.

<html> <head> <title><?php echo $title ?> - CodeIgniter 2 Tutorial</title> </head> <body> <h1>CodeIgniter 2 Tutorial</h1>

Шапка содержит основной код HTML, который вы будете выводить перед загрузкой основного отображения, вместе с заголовком. Она также выводит переменную $title, которая будет позже определена в контроллере. Теперь создадим подвал в application/views/templates/footer.php, который включает следующий код:

<strong>&copy; 2011</strong> </body> </html>

## Добавление логики в контроллер

Ранее вы устанавливали контроллер с методом view(). Метод принимает один параметр, который указывает на имя страницы, которую нужно загрузить. Шаблоны статических страниц будут находиться в директории application/views/pages/.

В этой директории создайте два файла home.php и about.php. В этих файлах напишите любой текст, все что пожелаете, и сохраните их. Если вы не хотите быть оригинальным, попробуйте "Hello World!".

Чтобы загрузить эти страницы, вы должны проверить существование запрашиваемых страниц:

    public function view($page = 'home')
    {

    	if ( ! file_exists('application/views/pages/'.$page.'.php'))
    	{
    		// Упс, у нас нет такой страницы!
    		show_404();
    	}

    	$data['title'] = ucfirst($page); // Сделать первую букву заглавной

    	$this->load->view('templates/header', $data);
    	$this->load->view('pages/'.$page, $data);
    	$this->load->view('templates/footer', $data);

    }

Теперь, если страница существует, она будет загружена, включая шапку и подвал, и будет показана пользователю. Если страница не существует, будет показана ошибка "404 Page not found".

Первая строка в этом метода проверяет существование страницы. Родная функция PHP file_exists() используется для проверки существования файла. Функция show_404() встроена в CodeIgniter, она позволяет отображать страницы ошибок по умолчанию.

В шаблоне шапки переменная $title была использована для настройки заголовка страницы. Значение заголовка определяется в этом методе, но вместо присвоения значения переменной, оно присваивается элементу title массива $data.

Наконец мы загружаем отображения, чтобы они отобразились. Второй параметр метода view() используется для передачи значений в отображение. Каждое значение в массиве $data ассоциируется переменной с именем, соответствующим ключу. Поэтому значение $data['title'] в контроллере эквивалентно значению $title в отображении.

## Роутинг

Теперь контроллер функционирует! Направьте ваш браузер в [your-site-url]index.php/pages/view чтобы увидеть вашу страницу. Когда вы посещаете index.php/pages/view/about, вы увидите страницу about, включающую шапку и подвал.

Используя собственные правила роутинга, вы можете переадресовать любой URI к любому контроллеру и методу, изменяя нормальное поведение: `http://example.com/[controller-class]/[controller-method]/[arguments]`

Давайте сделаем это. Откройте файл роутинга, находящийся в application/config/routes.php и добавьте две следующие строки. Удалите весь другой код, который устанавливает любые элементы в массиве $route.

    $route['default_controller'] = 'pages/view';
    $route['(:any)'] = 'pages/view/$1';

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

Больше информации о роутинге вы можете найти в документации URI роутинга.

Здесь второе правило в массиве $routes, соответствующее любому запросу, используя строку шаблона (:any), и передающее параметр в метод view() класса Pages.

Теперь посетите index.php/about. Роутинг сработал корректно? Здорово!

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter