После того, как вы извлекли данные из HTTP-запроса, вы что-либо делаете с этими данными (как правило, вы будете обрабатывать данные с помощью моделей) и вернете выходные данные из метода действия.
Как вы можете видеть, метод indexAction()
Index-контроллера возвращает экземпляр класса ViewModel
.
Класс ViewModel
- это своего рода переменная-контейнер. Все переменные, переданные в ее конструктор,
затем будут автоматически доступны скрипту представления.
Давайте рассмотрим пример из реальной жизни. Мы создадим еще один метод действия в нашем классе IndexController
,
который мы назовем aboutAction()
. Действие "about" будет отображать страницу About Us нашего сайта.
В методе действия мы создадим две переменные, содержащие информацию о нашем сайте, и вернем
переменные для передачи в представление с помощью объекта ViewModel
:
// Действие "about"
public function aboutAction()
{
$appName = 'HelloWorld';
$appDescription = 'A sample application for the Using Zend Framework 3 book';
// Возвращает переменные скрипту представления с помощью
// переменной-контейнера ViewModel
return new ViewModel([
'appName' => $appName,
'appDescription' => $appDescription
]);
}
В строках 4-5 мы создаем переменные $appName
и $appDescription
. Они хранят соответственно
имя и описание нашего приложения.
В строках 9-12 мы передаем переменные, которые мы создали, в конструктор объекта ViewModel
как ассоциативный массив. Ключи массива определяют имена переменных, которые после возврата
будут доступны скрипту представления.
Класс ViewModel
предоставляет несколько методов, которые вы можете дополнительно использовать,
чтобы установить переменные в ViewModel
и извлечь переменные из него. Таблица 4.5
расскажет о этих методах:
Имя метода | Описание |
---|---|
getVariable($name, $default) |
Возвращает переменную по имени (или значение по умолчанию, если переменной не существует). |
setVariable($name, $value) |
Устанавливает переменную. |
setVariables($variables, $overwrite) |
Устанавливает набор переменных; есть возможность перезаписи уже существующих. |
getVariables() |
Возвращает все переменные как массив. |
clearVariables() |
Удаляет все переменные. |