Skip to content

Latest commit

 

History

History
64 lines (43 loc) · 5.48 KB

Views.md

File metadata and controls

64 lines (43 loc) · 5.48 KB

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

Представление в паттерне 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
$this->view->addVar('b', $a);
  • Для запуска кода представления из файла, лежащего на диске по относительному пути путь/к/файлу/предстваления (по умолчанию относительно директории application/views/), а значит, и для вывода всех ранее переданных в него с помощью addVar() переменных, мы должны в действии контроллера вызвать метод:
$this->view->render('путь/к/файлу/предстваления');

Что дальше

Далее переходим в теме "Макеты представлений".