After you have retrieved the data from the HTTP request, you would do something with that data (typically you will process the data with your model layer) and return the data from the action method.
You can see that the indexAction() method of the Index controller returns an instance of the ViewModel class.
The ViewModel class is some kind of a variable container. All variables passed to
its constructor, will be then automatically accessible by the view script.
Let's have some real-life example. We will create another action method in our IndexController class, which we
will call the aboutAction(). The "about" action will display the About page of our site.
In the action method, we will create two variables containing information about our website,
and return the variables for rendering in a view with the help of ViewModel object:
// The "about" action
public function aboutAction()
{
$appName = 'HelloWorld';
$appDescription = 'A sample application for the Using Zend Framework 3 book';
// Return variables to view script with the help of
// ViewModel variable container
return new ViewModel([
'appName' => $appName,
'appDescription' => $appDescription
]);
}
In lines 4-5, we create the $appName and $appDescription variables. They store our application
name and description, respectively.
In lines 9-12, we pass the variables we've created to the constructor of the ViewModel object
as an associative array. The array keys define the names of the variables which on return
will be accessible to view script.
The ViewModel class provides several methods that you can additionally use to
set variables to ViewModel and retrieve variables from it. The table 4.5
provides the methods summary:
| Method name | Description |
|---|---|
getVariable($name, $default) |
Returns a variable by name (or default value if the variable does not exist). |
setVariable($name, $value) |
Sets a variable. |
setVariables($variables, $overwrite) |
Sets a group of variables, optionally overwriting the existing ones. |
getVariables() |
Returns all variables as an array. |
clearVariables() |
Removes all variables. |