Статические страницы
Примечание: В этом руководстве предполагается, что вы загрузили CodeIgniter и установили фреймворк в вашей среде разработки.
Первым делом вы создадите контроллер для обработки статических страниц. Контроллер — это просто класс, который помогает делегировать работу. Он является связующим звеном вашей веб-приложения.
Например, при обращении к:
http://example.com/news/latest/10Можно предположить, что существует контроллер с именем «news». Вызываемый метод в news будет «latest». Задача метода news может заключаться в получении 10 новостных элементов и отображении их на странице. Очень часто в MVC вы увидите шаблоны URL, которые соответствуют:
http://example.com/[имя-класса-контроллера]/[имя-метода-контроллера]/[аргументы]По мере усложнения схем URL это может измениться. Но пока этого достаточно.
Создайте файл в application/controllers/Pages.php со следующим кодом.
<?php
class Pages extends CI_Controller {
public function view($page = 'home')
{
}
}
Вы создали класс с именем Pages, имеющий метод view, который принимает один аргумент с именем $page. Класс Pages наследуется от класса CI_Controller. Это означает, что новый класс pages может получить доступ к методам и переменным, определённым в классе CI_Controller (system/core/Controller.php).
Контроллер станет центром каждого запроса к вашему веб-приложению. В технических обсуждениях CodeIgniter его может называть «супер объектом». Как и любой PHP-класс, вы обращаетесь к нему внутри контроллеров как $this. Обращение к $this позволяет загружать библиотеки, представления и в целом управлять фреймворком.
Теперь, когда вы создали свой первый метод, пришло время создать некоторые базовые шаблоны страниц. Мы создадим два «представления» (шаблоны страниц), которые будут служить нашим подвалом и заголовком страницы.
Создайте заголовок в application/views/templates/header.php и добавьте следующий код:
<html>
<head>
<title>CodeIgniter Tutorial</title>
</head>
<body>
<h1><?php echo $title; ?></h1>
Заголовок содержит базовый HTML-код, который вы хотите отобразить перед загрузкой основного представления, вместе с заголовком. Он также выведет переменную $title, которую мы определим позже в контроллере. Теперь создайте подвал в application/views/templates/footer.php, включив следующий код:
<em>© 2015</em>
</body>
</html>
Добавление логики в контроллер
Ранее вы создали контроллер с методом view(). Этот метод принимает один параметр — имя загружаемой страницы. Шаблоны статических страниц будут находиться в каталоге application/views/pages/.
В этом каталоге создайте два файла с именами home.php и about.php. В этих файлах напишите любой текст (например, «Hello World!») и сохраните их.
Для загрузки этих страниц вам нужно проверить, действительно ли запрашиваемая страница существует:
public function view($page = 'home')
{
if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}
Теперь, когда страница существует, она загружается, включая заголовок и подвал, и отображается пользователю. Если страница не существует, отображается ошибка «404 Страница не найдена».
Первая строка в этом методе проверяет существование страницы. Используется встроенная функция PHP file_exists(), чтобы проверить, находится ли файл в ожидаемом месте. show_404() — встроенная функция CodeIgniter, которая отображает страницу ошибки по умолчанию.
В шаблоне заголовка использовалась переменная $title для настройки заголовка страницы. Значение title определяется в этом методе, но вместо присвоения значения переменной, оно присваивается элементу title в массиве $data.
Последнее, что нужно сделать, это загрузить представления в порядке их отображения. Второй параметр в методе view() используется для передачи значений в представление. Каждое значение в массиве $data присваивается переменной с именем его ключа. Таким образом, значение $data['title'] в контроллере эквивалентно значению $title в представлении.
Маршрутизация
Контроллер теперь работает! Перейдите в свой браузере по адресу [your-site-url]index.php/pages/view, чтобы увидеть свою страницу. При посещении index.php/pages/view/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 документации.
Здесь второе правило в массиве $route соответствует любому запросу, используя символ подстановки (:any), и передает параметр методу view() класса Pages.
Теперь посетите index.php/about. Была ли она правильно перенаправлена к методу view() в контроллере pages? Отлично!
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/tutorial/static_pages.html