mirror of
https://github.com/Mibew/mibew.git
synced 2025-01-31 21:34:42 +03:00
Create "Resource not found" event
This commit is contained in:
parent
5c52ec61da
commit
1814298f4f
@ -137,6 +137,8 @@ class Application implements RouterAwareInterface, AuthenticationManagerAwareInt
|
|||||||
$response = call_user_func($controller, $request);
|
$response = call_user_func($controller, $request);
|
||||||
} catch (AccessDeniedHttpException $e) {
|
} catch (AccessDeniedHttpException $e) {
|
||||||
$response = $this->buildAccessDeniedResponse($request);
|
$response = $this->buildAccessDeniedResponse($request);
|
||||||
|
} catch (NotFoundHttpException $e) {
|
||||||
|
$response = $this->buildNotFoundResponse($request);
|
||||||
} catch (HttpException $e) {
|
} catch (HttpException $e) {
|
||||||
// Build response based on status code which is stored in exception
|
// Build response based on status code which is stored in exception
|
||||||
// instance.
|
// instance.
|
||||||
@ -291,4 +293,32 @@ class Application implements RouterAwareInterface, AuthenticationManagerAwareInt
|
|||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds response for a not found page.
|
||||||
|
*
|
||||||
|
* Triggers {@link \Mibew\EventDispatcher\Events::RESOURCE_NOT_FOUND}
|
||||||
|
* event.
|
||||||
|
*
|
||||||
|
* @param Request $request Incoming request
|
||||||
|
* @return Response
|
||||||
|
*/
|
||||||
|
protected function buildNotFoundResponse(Request $request)
|
||||||
|
{
|
||||||
|
// Trigger fail
|
||||||
|
$args = array(
|
||||||
|
'request' => $request,
|
||||||
|
'response' => false,
|
||||||
|
);
|
||||||
|
$dispatcher = EventDispatcher::getInstance();
|
||||||
|
$dispatcher->triggerEvent(Events::RESOURCE_NOT_FOUND, $args);
|
||||||
|
|
||||||
|
if ($args['response'] && ($args['response'] instanceof Response)) {
|
||||||
|
// If one of event listeners returned the response object send it
|
||||||
|
// to the client.
|
||||||
|
return $args['response'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Response('Not Found', 404);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,4 +141,18 @@ final class Events
|
|||||||
* a response object to this field.
|
* a response object to this field.
|
||||||
*/
|
*/
|
||||||
const RESOURCE_ACCESS_DENIED = 'resourceAccessDenied';
|
const RESOURCE_ACCESS_DENIED = 'resourceAccessDenied';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resource is not found.
|
||||||
|
*
|
||||||
|
* This event is triggered if a resource is not found. An
|
||||||
|
* associative array with the following items is passed to the event
|
||||||
|
* handlers:
|
||||||
|
* - "request": {@link Symfony\Component\HttpFoundation\Request}, incoming
|
||||||
|
* request object.
|
||||||
|
* - "response": {@link Symfony\Component\HttpFoundation\Response}, if a
|
||||||
|
* plugin wants to send a custom response to the client it should attach
|
||||||
|
* a response object to this field.
|
||||||
|
*/
|
||||||
|
const RESOURCE_NOT_FOUND = 'resourceNotFound';
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user