Фреймворк CodeIgniter Version 2.1.3


Отображения

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

Отображения никогда не вызываются напрямую, они должны быть загружены контроллером. Помните, что в MVC-фреймворке, контроллер действует как инспектор ГИБДД, поэтому именно он отвечает за вызов конкретного отображения. Если вы не прочли страницу Контроллеры, сделайте это перед продолжением.

Используя пример контроллера, который вы создали на странице Контроллеры, давайте добавим в него отображения.

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

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

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

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

Чтобы загрузить конкретный файл отображения, используйте следующую функцию:

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

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

Теперь откройте ваш файл контроллера blog.php, который вы сделали ранее, и замените echo() на следующую функцию:

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

example.com/index.php/blog/

Загрузка множественных отображений

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

<?php

class Page extends CI_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('folder_name/file_name');

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращение отображений, как данных

Есть третий опциональный параметр, который позволяет вам изменить поведение функции так, что она будет возвращать строку, а не передавать данные в браузер. Это может быть полезным, если вы хотите обрабатывать данные другими способами. Если вы установите параметр в TRUE, функция вернет данные. Поведение по умолчанию — FALSE, то есть все данные отправляются в браузер. Помните, что результат следует присвоить переменной:

$string = $this->load->view('myfile', '', true);
    Поддержать сайт на родительском проекте КГБ