Yaf_Plugin_Abstract::routerShutdown
(Yaf >=1.0.0)
Hook after routing
Description
This hook is triggered after the routing process has finished and the controller and action names have been resolved, but before the dispatch loop starts. It is usually used for access control checks such as a login check, because the target controller and action are already known.
Parameters
requestThe
Yaf_Request_Abstractinstance being dispatched.responseThe
Yaf_Response_Abstractinstance.
Return Values
No value is returned.
Examples
Yaf_Plugin_Abstract::routerShutdown example
<?php
class AuthPlugin extends Yaf_Plugin_Abstract
{
public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
/* routing is done, so the target controller and action are
* known: check whether the user may access them */
$public = array("Index" => array("index"), "User" => array("login"));
$controller = $request->getControllerName();
$action = $request->getActionName();
if (isset($public[$controller]) && in_array($action, $public[$controller])) {
return;
}
if (!Yaf_Session::getInstance()->has("login")) {
$response->setRedirect("/user/login");
$request->setDispatched(true); // do not dispatch the request
}
}
}
/* plugins are registered in the bootstrap */
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initPlugin(Yaf_Dispatcher $dispatcher)
{
$dispatcher->registerPlugin(new AuthPlugin());
}
}
?>See Also
Yaf_Plugin_Abstract::routerStartupYaf_Plugin_Abstract::dispatchLoopStartupYaf_Plugin_Abstract::preDispatchYaf_Plugin_Abstract::postDispatchYaf_Plugin_Abstract::dispatchLoopShutdownYaf_Plugin_Abstract::preResponse