Reference
In This Article
The MvcEvent
zend-mvc defines and utilizes a custom Zend\EventManager\Event
implementation,
Zend\Mvc\MvcEvent
. This event is created during Zend\Mvc\Application::bootstrap()
and is passed when triggering all application events. Additionally, if your
controllers implement the Zend\Mvc\InjectApplicationEventInterface
, MvcEvent
will be injected into those controllers.
The MvcEvent
adds accessors and mutators for the following:
Application
object.Request
object.Response
object.Router
object.RouteMatch
object.- Result - usually the result of dispatching a controller.
ViewModel
object, typically representing the layout view model.
The methods it defines are:
setApplication($application)
getApplication()
setRequest($request)
getRequest()
setResponse($response)
getResponse()
setRouter($router)
getRouter()
setRouteMatch($routeMatch)
getRouteMatch()
setResult($result)
getResult()
setViewModel($viewModel)
getViewModel()
isError()
setError()
getError()
getController()
setController($name)
getControllerClass()
setControllerClass($class)
The Application
, Request
, Response
, Router
, and ViewModel
are all
injected during the bootstrap
event. Following the route
event, it will be
injected also with the RouteMatch
object encapsulating the results of routing.
Since this object is passed around throughout the MVC, it is a common location for retrieving the results of routing, the router, and the request and response objects. Additionally, we encourage setting the results of execution in the event, to allow event listeners to introspect them and utilize them within their execution. As an example, the results could be passed into a view renderer.
Order of events
The following events are triggered, in the following order:
Name | Constant | Description |
---|---|---|
bootstrap |
MvcEvent::EVENT_BOOTSTRAP |
Bootstrap the application by creating the ViewManager. |
route |
MvcEvent::EVENT_ROUTE |
Perform routing (or route-related actions). |
dispatch |
MvcEvent::EVENT_DISPATCH |
Dispatch the matched route to a controller/action. |
dispatch.error |
MvcEvent::EVENT_DISPATCH_ERROR |
Event triggered in case of a problem during dispatch process (e.g., unknown controller). |
render |
MvcEvent::EVENT_RENDER |
Prepare the data and delegate the rendering to the view layer. |
render.error |
MvcEvent::EVENT_RENDER_ERROR |
Event triggered in case of a problem during the render process (e.g., no renderer found). |
finish |
MvcEvent::EVENT_FINISH |
Perform tasks once everything else is done. |
The following sections provide more detail on each event.
MvcEvent::EVENT_BOOTSTRAP
("bootstrap")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Class | Priority | Method Called | Triggers | Description |
---|---|---|---|---|
Zend\Mvc\View\Http\ViewManager |
10000 | onBootstrap |
none | Prepares the view layer (instantiate a Zend\Mvc\View\Http\ViewManager ). |
Triggered By
This event is triggered by the following classes:
Class | In Method |
---|---|
Zend\Mvc\Application |
bootstrap |
MvcEvent::EVENT_ROUTE
("route")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Class | Priority | Method Called | Triggers | Description |
---|---|---|---|---|
Zend\Mvc\ModuleRouteListener |
1 | onRoute |
none | Determines if the module namespace should be prepended to the controller name. This is the case if the route match contains a parameter key matching the MODULE_NAMESPACE constant. |
Zend\Mvc\RouteListener |
1 | onRoute |
MvcEvent::EVENT_DISPATCH_ERROR (if no route is matched) |
Tries to match the request to the router and return a RouteMatch object. |
Triggered By
This event is triggered by the following classes:
Class | In Method | Description |
---|---|---|
Zend\Mvc\Application |
run |
Uses a short circuit callback that allows halting propagation of the event if an error is raised during routing. |
MvcEvent::EVENT_DISPATCH
("dispatch")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Console context only
The following listeners are only attached in a console context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Console\InjectNamedConsoleParamsListener |
1000 | injectNamedParams |
Merge all params (route match params and params in the command), and add them to the Request object. |
Zend\Mvc\View\Console\CreateViewModelListener |
-80 | createViewModelFromArray |
If the controller action returns an associative array, this listener casts it to a ConsoleModel object. |
Zend\Mvc\View\Console\CreateViewModelListener |
-80 | createViewModelFromString |
If the controller action returns a string, this listener casts it to a ConsoleModel object. |
Zend\Mvc\View\Console\CreateViewModelListener |
-80 | createViewModelFromNull |
If the controller action returns null, this listener casts it to a ConsoleModel object. |
Zend\Mvc\View\Console\InjectViewModelListener |
-100 | injectViewModel |
Inserts the ViewModel (in this case, a ConsoleModel ) and adds it to the MvcEvent object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminal. |
HTTP context only
The following listeners are only attached in an HTTP context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Http\CreateViewModelListener |
-80 | createViewModelFromArray |
If the controller action returns an associative array, this listener casts it to a ViewModel object. |
Zend\Mvc\View\Http\CreateViewModelListener |
-80 | createViewModelFromNull |
If the controller action returns null, this listener casts it to a ViewModel object. |
Zend\Mvc\View\Http\RouteNotFoundStrategy |
-90 | prepareNotFoundViewModel |
Creates and return a 404 ViewModel . |
Zend\Mvc\View\Http\InjectTemplateListener |
-90 | injectTemplate |
Injects a template into the view model, if none present. Template name is derived from the controller found in the route match, and, optionally, the action, if present. |
Zend\Mvc\View\Http\InjectViewModelListener |
-100 | injectViewModel |
Inserts the ViewModel (in this case, a ViewModel ) and adds it to the MvcEvent object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminable. |
All contexts
The following listeners are attached for all contexts (sorted from higher priority to lower priority):
Class | Priority | Method Called | Triggers | Description |
---|---|---|---|---|
Zend\Mvc\MiddlewareListener |
1 | onDispatch |
MvcEvent::EVENT_DISPATCH_ERROR (if an exception is raised during dispatch processes) |
Load and dispatch the matched PSR-7 middleware from the service manager (and throws various exceptions if it does not). |
Zend\Mvc\DispatchListener |
1 | onDispatch |
MvcEvent::EVENT_DISPATCH_ERROR (if an exception is raised during dispatch processes) |
Load and dispatch the matched controller from the service manager (and throws various exceptions if it does not). |
Zend\Mvc\AbstractController |
1 | onDispatch |
none | The onDispatch method of the AbstractController is an abstract method. In AbstractActionController , for instance, it calls the action method. |
Triggered By
This event is triggered by the following classes:
Class | In Method | Description |
---|---|---|
Zend\Mvc\Application |
run |
Uses a short circuit callback to halt propagation of the event if an error is raised during routing. |
Zend\Mvc\Controller\AbstractController |
dispatch |
If a listener returns a Response object, it halts propagation. Note: every AbstractController listens to this event and executes the onDispatch method when it is triggered. |
MvcEvent::EVENT_DISPATCH_ERROR
("dispatch.error")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Console context only
The following listeners are only attached in a console context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Console\RouteNotFoundStrategy |
1 | handleRouteNotFoundError |
Detect if an error is a "route not found" condition. If a “controller not found” or “invalid controller” error type is encountered, sets the response status code to 404. |
Zend\Mvc\View\Console\ExceptionStrategy |
1 | prepareExceptionViewModel |
Create an exception view model, and sets the status code to 404. |
Zend\Mvc\View\Console\InjectViewModelListener |
-100 | injectViewModel |
Inserts the ViewModel (in this case, a ConsoleModel ) and adds it to the MvcEvent object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminable. |
HTTP context only
The following listeners are only attached in an HTTP context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Http\RouteNotFoundStrategy |
1 | detectNotFoundError |
Detect if an error is a 404 condition. If a “controller not found” or “invalid controller” error type is encountered, sets the response status code to 404. |
Zend\Mvc\View\Http\RouteNotFoundStrategy |
1 | prepareNotFoundViewModel |
Create and return a 404 view model. |
Zend\Mvc\View\Http\ExceptionStrategy |
1 | prepareExceptionViewModel |
Create an exception view model and set the status code to 404. |
Zend\Mvc\View\Http\InjectViewModelListener |
-100 | injectViewModel |
Inserts the ViewModel (in this case, a ViewModel ) and adds it to the MvcEvent object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminable. |
All contexts
The following listeners are attached for all contexts:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\DispatchListener |
1 | reportMonitorEvent |
Used for monitoring when Zend Server is used. |
Triggered By
Class | In Method |
---|---|
Zend\Mvc\MiddlewareListener |
onDispatch |
Zend\Mvc\DispatchListener |
onDispatch |
Zend\Mvc\DispatchListener |
marshallControllerNotFoundEvent |
Zend\Mvc\DispatchListener |
marshallBadControllerEvent |
MvcEvent::EVENT_RENDER
("render")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Console context only
The following listeners are only attached in a console context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Console\DefaultRenderingStrategy |
-10000 | render |
Render the view. |
HTTP context only
The following listeners are only attached in an HTTP context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Http\DefaultRenderingStrategy |
-10000 | render |
Render the view. |
Triggered By
This event is triggered by the following classes:
Class | In Method | Description |
---|---|---|
Zend\Mvc\Application |
completeRequest |
This event is triggered just before the MvcEvent::FINISH event. |
MvcEvent::EVENT_RENDER_ERROR
("render.error")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Console context only
The following listeners are only attached in a console context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Console\ExceptionStrategy |
1 | prepareExceptionViewModel |
Create an exception view model and set the status code to 404. |
Zend\Mvc\View\Console\InjectViewModelListener |
-100 | injectViewModel |
Inserts the ViewModel (in this case, a ConsoleModel ) and adds it to the MvcEvent object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminable. |
HTTP context only
The following listeners are only attached in an HTTP context:
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\View\Http\ExceptionStrategy |
1 | prepareExceptionViewModel |
Create an exception view model and set the status code to 404. |
Zend\Mvc\View\Http\InjectViewModelListener |
-100 | injectViewModel |
Inserts the ViewModel (in this case, a ViewModel ) and adds it to the MvcEvent object. It either (a) adds it as a child to the default, composed view model, or (b) replaces it if the result is marked as terminable. |
Zend\Mvc\View\Http\DefaultRenderingStrategy |
-10000 | render |
Render the view |
Triggered By
This event is triggered by the following classes:
Class | In Method | Description |
---|---|---|
Zend\Mvc\View\Http\DefaultRenderingStrategy |
render |
This event is triggered if an exception is raised during rendering. |
MvcEvent::EVENT_FINISH
("finish")
Listeners
The following classes listen to this event (sorted from higher priority to lower priority):
Class | Priority | Method Called | Description |
---|---|---|---|
Zend\Mvc\SendResponseListener |
-10000 | sendResponse |
Triggers the SendResponseEvent in order to prepare the response (see the next chapter for more information about SendResponseEvent ). |
Triggered By
This event is triggered by the following classes:
Class | In Method | Description |
---|---|---|
Zend\Mvc\Application |
run |
This event is triggered once the MvcEvent::ROUTE event returns a correct ResponseInterface . |
Zend\Mvc\Application |
run |
This event is triggered once the MvcEvent::DISPATCH event returns a correct ResponseInterface . |
Zend\Mvc\Application |
completeRequest |
This event is triggered after MvcEvent::RENDER (at this point, the view is already rendered). |
Found a mistake or want to contribute to the documentation? Edit this page on GitHub!