Представления (Views)
- Автор mityok on февраля 26th, 2008
Представление это просто web-страница или фрагмент страницы, ее заголовок, подвал или другой блок. На практике представления могут быть встроены друг в друга если вам нужна такая иерархия.
Представление никогда не вызывается напрямую, оно должно быть загружено контроллером. В MVC фреймворке контроллер выступает в качестве мененджера данных и является отвественным за загрузку конкретного представления. Если вы еще не прочитали главу, посвященную контроллерам, прочтите ее прежде чем приступать к изучению данной главы.
Используя контроллер, который был создан в главе Контроллеры приступим к созданию представления
Создаем представление
Создайте файл с именем blogview.php и следующим содержимым:
<html> <head> <title>My Blog</title> </head> <body> <h1>Welcome to my Blog!</h1> </body> </html>
Сохраните этот файл в каталоге application/views/.
Загрузка представления
Для того, чтобы загрузить какое-либо представление понадобится вызвать следующую функцию :
$this->load->view('name');
Здесь 'name' - имя файла представления, при чем расширение указывать не нужно, если только вы не используете расширение файла отличное от .php
Теперь откроем ранее созданный файл контроллера blog.php и заменим выражение 'echo' на следующий код:
<?php class Blog extends Controller { function index() { $this->load->view('blogview'); } } ?>
Теперь если вы откроете ваш сайт по тому адресу, который раньше использовался для доступа к этому контроллеру, вы увидите новое представление страницы.
Загрузка нескольких представлений
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('folder_name/file_name');
Передача динамических данных в код представления
Вы можете передать из контроллера в представление данные как массив или как объект в качестве второго параметра для функции подключения представления. Вот пример с использованием массива:
'title' => 'My Title', 'heading' => 'My Heading', 'message' => 'My Message' ); $this->load->view('blogview', $data);
А в этом примере используется объект:
$data = new Someclass(); $this->load->view('blogview', $data);
Примечание: если вы используете объект для передачи данных, то переменные класса будут преобразованы в элементы массива.
Рассмотрим пример передачи данных из контроллера в представление:
<?php class Blog extends Controller { function index() { $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data); } } ?>
Теперь в файле представления выведем переданные данные:
<html> <head> </head> <body> </body> </html>
Теперь если вы откроете URL соответствующий вашему контроллеру, вы увидите подставленные значения переменных.
Использование циклов
Данные, которые вы можете передавать от контроллера к представлению не ограничены простыми типами. Вы можете передавать многомерные массивы, которые могут быть использованы для построения нескольких столбцов данных. Например, если вы читаете данные из базы данных, то они скорее всего будут представлены многомерным массивом.
Вот простой пример. Добавьте следующий код в ваш контроллер:
<?php class Blog extends Controller { function index() { $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data); } } ?>
теперь откройте файл представления и создайте цикл для отображения данных:

Отправить комментарий