Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Отображения

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

Отображения никогда не вызываются напрямую, они должны быть загружены контроллером. Помните, что в 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 CI_Controller { function index() { $this->load->view('blogview'); } } ?>

Если вы посетите ваш сайт, используя 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 class Blog extends CI_Controller { function index() { $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data); } } ?>

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

<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> </body> </html>

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

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

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

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

<?php class Blog extends CI_Controller { function index() { $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands'); $data['title'] = "My Real Title"; $data['heading'] = "My Real Heading"; $this->load->view('blogview', $data); } } ?>

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

<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <h3>My Todo List</h3> <ul> <?php foreach ($todo_list as $item):?> <li><?php echo $item;?></li> <?php endforeach;?> </ul> </body> </html>

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

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

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

`$string = $this->load->view('myfile', '', `true`);`

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter