Esempio n. 1
0
 private function registerGlobalErrorHandler(Application $app)
 {
     $app->error(function (\Exception $e, $code) use($app) {
         /** @var Request $request */
         $request = $app['request'];
         if (in_array('application/json', $request->getAcceptableContentTypes())) {
             $headers = [];
             if ($e instanceof HttpExceptionInterface) {
                 $code = $e->getStatusCode();
                 $headers = $e->getHeaders();
             }
             if ($e instanceof OAuthException) {
                 $code = $e->httpStatusCode;
                 $headers = $e->getHttpHeaders();
             }
             return new JsonResponse(['error' => $e->getMessage()], $code, $headers);
         }
         /* @var Twig_Environment $twig */
         $twig = $app['twig'];
         switch ($code) {
             case Response::HTTP_UNAUTHORIZED:
                 $message = $twig->render('error/401.twig');
                 break;
             case Response::HTTP_FORBIDDEN:
                 $message = $twig->render('error/403.twig');
                 break;
             case Response::HTTP_NOT_FOUND:
                 $message = $twig->render('error/404.twig');
                 break;
             default:
                 $message = $twig->render('error/500.twig');
         }
         return new Response($message, $code);
     });
 }