Представление в паттерне MVC -- это часть отвечающая за отображение данных. За то как именно они оформлены, в каком форме отдаются. Представления позволяют оформить те данные, что возвращаются из действий контроллеров.
В случае SMVC представления являеются .php файлами, где смешивается php-код и html разметка (см. пример в репозитории).
ПРИМЕЧАНИЕ: для вывода данных в представлениях (если они являеются php-файлов) помимо обычного текста (не включенного в php-тэги) и явного вызова echo()
внутри тэгов, также используется т.н. эхо-тэг <?=
(см. пример в smvc).
Данные для Представления обычно извлекаются в Контроллере (в одном из действий одного из контроллеров), извлечение происходит:
- при обращении к какой-либо Модели (или нескольким)
- или каким-то иным способом (например, с помощью сетевого запроса)
Рассмотрим в качестве примера действие index
контроллера домашнней страницы (см. исх. код):
/**
* Выводит на экран страницу "Домашняя страница"
*/
public function indexAction()
{
$this->view->addVar('homepageTitle', $this->homepageTitle); // передаём переменную по view
$this->view->render('homepage/index.php');
}
-- как видим, здесь используются методы объекта, лежащего в свойстве view
(обращение $this->view
), о том как в этом свойстве оказывается такой объект можно почитать в разделе о Контроллерах, на этой же странице рассмотрим реализацию обсудим что далают методы этого объекта (класса ItForFree\SimpleMVC\MVC\View
):
- Метод
addVar('имяпеременной', 'значение')
-- добавляет очередное значение, оно будет доступно в файле предствления под имененем имяпеременной, а точнее как переменная$имяпеременной
. - Метод
render('путь/к/файлу/предстваления')
-- "передаст" все переменные коду, файла представления, лежащего по указанному пути и выполнит код этого файла (благодаря чему пользователь в итоге увидит данные). Подробнее его работу мы рассмотрим в разделе "Макеты представлений".
По умолчанию файлы представлений лежат в директории application/views/
-- именно от этой диктории отсчитываются пути, например для приводившегося выше вызова:
$this->view->render('homepage/index.php');
т.е. по факту будет использовать путь application/views/homepage/index.php
.
Из этого раздела мы узнали, что:
- Для передачи переменной
$a
под именем$b
необходимо в действии контроллера сделать вызов:
// данные из $a будут доступны под именем $b
$this->view->addVar('b', $a);
- Для запуска кода представления из файла, лежащего на диске по относительному пути
путь/к/файлу/предстваления
(по умолчанию относительно директорииapplication/views/
), а значит, и для вывода всех ранее переданных в него с помощьюaddVar()
переменных, мы должны в действии контроллера вызвать метод:
$this->view->render('путь/к/файлу/предстваления');
Далее переходим в теме "Макеты представлений".