CodeIgniter, руководство пользователя к версии 1.6.1


Отображения

Отображение — это простая веб-страница или ее фрагмент, например шапка, подвал, боковая панель или т.п. По факту отображения могут быть очень гибко встроены в другие отображения.

Отображения никогда не вызываются напрямую. Они должны быть загружены из контроллеров. Помните, что в модели MVC контроллер управляет всем происходящим, именно в нем должно быть определено какое отображение загружать. Если вы не читали о Контроллерах, то вам следует это сделать прямо сейчас, прежде чем продолжать.

Давайте для контроллера, созданного вами в процессе прочтения о контроллерах, создадим отображение.

Создание отображения

Используя ваш текстовый редактор создайте файл с названием blogview.php и вставьте в него следующие строки:

Затем сохраните этот файл в директории application/views/.

Загрузка отображения

Чтобы загрузить необходимое вам отображение используйте эту функцию:

$this->load->view('name');

Где name это имя вашего файла с отображением. Замечание: расширение .php не надо указывать, только если вы не используете что-то отличное от .php.

Теперь откройте ваш контроллер, ранее названный blog.php и замените в нем функцию echo на функцию загрузки отображения:

Если вы зайдете на сайт, используя URL определенный ранее, то увидите ваше новое отображение. URL должен быть таким:

www.your-site.com/index.php/blog/

Загрузка нескольких отображений

CodeIgniter правильно обработает несколько вызовов $this->load->view из одного контроллера. Если произойдет более одного вызова, то будут загружены все отображения. Например вы можете хранить отдельно отображение шапки, отображение меню, контента и подвала. Это может выглядеть примерно так:

<?php

class Page extends Controller {

   function index()
   {
      $data['page_title'] = 'Your title';
      $this->load->view('header');
      $this->load->view('menu');
      $this->load->view('content', $data);
      $this->load->view('footer');
   }

}
?>

В приведенном выше примере мы используем «динамическое добавление данных», информацию о котором вы прочтете ниже.

Хранение отображений в подпапках

Ваши отображения могут быть сохранены в подпапках, если вы предпочитаете таким образом структурировать данные. При таком подходе необходимо будет включать имя папки в путь загрузки отображения. Например:

$this->load->view('имя_папки/имя_файла');

Добавление динамических данных в ваше отображение

Данные передаются в отображение из контроллера при помощи массива или объекта вторым параметром функции загрузки отображения. Вот пример с использованием массива:

$data = array(
               'title' => 'My Title',
               'heading' => 'My Heading',
               'message' => 'My Message'
          );

$this->load->view('blogview', $data);

А сейчас пример с использованием объекта:

$data = new Someclass();
$this->load->view('blogview', $data);

Замечание: Если вы используете объект, то его переменные будут превращены в массив.

Давайте все испытаем на практике с вашим контроллером. Откройте его и добавьте следующий код:

Теперь откройте файл с вашим отображением и смените находящийся там текст на переменные, названия которых соответствуют ключам массива:

Затем загрузите вашу страницу по ранее определенному URL и обратите внимание на то, что все переменные заменены текстом.

Создание циклов

Данные массива, который вы передаете в отображение, не ограничиваются простыми переменными. Вы можете передавать многомерные массивы с множеством строк. Например, если вы выбираете данные из базы данных, то они, как правило, будут представлены многомерным массивом.

Вот простой пример. Добавьте эти строки в ваш контроллер:

Теперь откройте файл с вашим отображением и создайте цикл:

Замечание: Заметьте, что в приведенном выше примере мы используем альтернативный синтаксис PHP. Если вы с ним не знакомы, то можете прочитать об этом здесь.