Spec-Zone.ru › CodeIgniter 3

Представления

Представление — это просто веб-страница или фрагмент страницы, например, заголовок, подвал, боковая панель и т. д. На самом деле представления могут гибко встраиваться в другие представления (в другие представления и т. д.), если вам нужна такая иерархия.

Представления никогда не вызываются напрямую, они должны загружаться контроллером. Помните, что в фреймворке 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 не нужно указывать, если вы используете не .php.

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

<?php
class Blog extends CI_Controller {

        public function index()
        {
                $this->load->view('blogview');
        }
}

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

example.com/index.php/blog/

Загрузка нескольких представлений

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

<?php

class Page extends CI_Controller {

        public 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('directory_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 {

        public 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>

Затем загрузите страницу по используемому вами URL, и вы должны увидеть замененные переменные.

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

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

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

<?php
class Blog extends CI_Controller {

        public 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);

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/general/views.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API