/** * Converts an Exception to a Response. * * @param Request $request * @param FlattenException $exception * @return Response */ public function showAction(Request $request, FlattenException $exception) { if (is_subclass_of($exception->getClass(), 'Pagekit\\Kernel\\Exception\\HttpException')) { $title = $exception->getMessage(); } else { $title = __('Whoops, looks like something went wrong.'); } $content = $this->getAndCleanOutputBuffering($request->headers->get('X-Php-Ob-Level', -1)); $response = App::view('system/error.php', compact('title', 'exception', 'content')); return App::response($response, $exception->getCode(), $exception->getHeaders()); }
/** * Converts a an exception to a JSON response. * * @param FlattenException $exception * @param Request $request * * @return Response */ public function __invoke(FlattenException $exception, Request $request) : Response { $exceptionClass = $exception->getClass(); foreach ($this->exceptionToStatus as $class => $status) { if (is_a($exceptionClass, $class, true)) { $exception->setStatusCode($status); break; } } $headers = $exception->getHeaders(); $format = ErrorFormatGuesser::guessErrorFormat($request, $this->errorFormats); $headers['Content-Type'] = sprintf('%s; charset=utf-8', $format['value'][0]); $headers['X-Content-Type-Options'] = 'nosniff'; $headers['X-Frame-Options'] = 'deny'; return new Response($this->serializer->serialize($exception, $format['key']), $exception->getStatusCode(), $headers); }
/** * Converts an Exception to a Response. * * @param Request $request * @param FlattenException $exception * @param DebugLoggerInterface $logger * @param string $_format * @throws \InvalidArgumentException * @return Response */ public function showAction(Request $request, FlattenException $exception, DebugLoggerInterface $logger = null, $_format = 'html') { $currentContent = $this->getAndCleanOutputBuffering($request->headers->get('X-Php-Ob-Level', -1)); switch ($exception->getClass()) { case 'Pagekit\\Component\\Session\\Csrf\\Exception\\BadTokenException': $title = __('Invalid CSRF token.'); break; case 'Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException': $title = __('Sorry, the page you are looking for could not be found.'); break; case 'Symfony\\Component\\HttpKernel\\Exception\\AccessDeniedHttpException': $title = $exception->getMessage(); break; default: $title = __('Whoops, looks like something went wrong.'); } $response = $this['view']->render('extension://system/theme/templates/error.razr', compact('title', 'exception', 'currentContent')); return $this['response']->create($response, $exception->getStatusCode(), $exception->getHeaders()); }
/** * @param string $format * @param FlattenException $exception * @param int $code * @param array $parameters * @param Request $request * @param bool $showException * * @return View */ protected function createView($format, FlattenException $exception, $code, $parameters, Request $request, $showException) { $parameters = $this->createExceptionWrapper($parameters); $view = View::create($parameters, $code, $exception->getHeaders()); $view->setFormat($format); return $view; }