Создаем представление для отображения страниц в CodeIgniter

Мы остановились на том, что создали представление главной страницы в виде списка страниц из нашей базы данных с текстом этих страниц и ссылкой на старницу полного просмотра.

Ссылка на страницу просмотра полного текста была ввиде index.php/page/view/1. Теперь вспомним как формируется и распознается url (адрес) в движке CodeIgniter:

  • первый сегмент (в данном случае, page) — название контроллера, который будет вызываться;
  • второй сегмент (view в примере) — название функции в контроллере, вызов которой будет производится;
  • остальные сегменты (в данном случае id страницы, был у нас такой столбец в таблице pages) — параметры вызываемой функции;

Итак, нам нужно выполнить следующее:

  • добавить функцию view в контроллер page извлекающую строку из pages по переданному параметру;
  • добавить представление page_view отображающее страницу;
  • добавить пустое представление, на случай когда передали неправильный параметр;

Добавить в page.php:

function view($id)
{

// выполняем запрос
$query = $this->db->query('select * from pages where id='.$id);
// проверяем число строк в результате
// если их больше нуля, то нужно показать страницу
// а нем случае либо 0, либо 1 результат
if($query->num_rows() > 0)
{

// сохранили результат для передачи
$data['result'] = $query->result();
// загрузили представление страницы передав туда данные для отображения
$this->load->view('page_view',$data);

}
else
{

// если нам передали неправильный id то загружаем пустое представление
$this->load->view('empty_view');

}
}

Создать представление page_view с таким содержимым:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>title</title>
<link type="text/css" rel="stylesheet" media="all" href="/ci/system/application/views/style.css"/>
</head>
<body>
<?php
// массив объектов длиной в 1
// больше у нас выйти не может
// так как id поле уникальное
// заголовок в h1
echo '<h1>'.$result[0]->header.'</h1>';
// текст в параграфе
echo '<p>'.$result[0]->content.'</p>';
// далее ссылка на главную
?>
<a href="/ci">Главная</a>
</body>
</html>

Создать представление empty_view для показа при неправильном параметре с таким содержимым:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Страница не найдена!</title>
<link type="text/css" rel="stylesheet" media="all" href="/ci/system/application/views/style.css"/>
</head>
<body>
<p>Такой страницы не существует!!!</p>
<a href="/ci">Главная</a>
</body>
</html>

Вроде ничего не забыл. Пока оформление страниц отсутствует, позднее Вам нужно будет совместить оформление с представлениями, которые мы создаем.

Удачи!

вернуться назад