Отображения
Отображение — это простая веб-страница или ее фрагмент, например шапка, подвал, боковая панель или т.п. По факту отображения могут быть очень гибко встроены в другие отображения.
Отображения никогда не вызываются напрямую. Они должны быть загружены из контроллеров. Помните, что в модели 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. Если вы с ним не знакомы, то можете прочитать об этом здесь.