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

CodeIgniter User Guide Version 2.1.3


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

Примечание: Этот урок предполагает, что вы загрузили 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 со следующим кодом.

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

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

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

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

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

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

Ранее вы устанавливали контроллер с методом 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

Яндекс.Метрика