From 8e82056afafbd34b2736bb4e35c1d2a16f1c9b88 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Sat, 24 Aug 2019 12:31:04 +0300 Subject: [PATCH] ControllerResponseTrait: Better error response --- .../Traits/ControllerResponseTrait.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php index bf3f8e18b..3ab8b7f7b 100644 --- a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php +++ b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php @@ -87,10 +87,10 @@ trait ControllerResponseTrait } /** - * @param \Exception $e - * @return Response + * @param \Throwable $e + * @return \Throwable */ - protected function createErrorResponse(\Exception $e): ResponseInterface + protected function createErrorResponse(\Throwable $e): ResponseInterface { $validCodes = [ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, @@ -113,7 +113,15 @@ trait ControllerResponseTrait $response = [ 'code' => $code, 'status' => 'error', - 'message' => $message + 'message' => $message, + 'error' => [ + 'type' => \get_class($e), + 'code' => $code, + 'message' => $message, + 'file' => $e->getFile(), + 'line' => $e->getLine(), + 'trace' => explode("\n", $e->getTraceAsString()), + ] ]; $accept = $this->getAccept(['application/json', 'text/html']); @@ -130,7 +138,7 @@ trait ControllerResponseTrait } // TODO: improve error page - return $this->createHtmlResponse($response['message']); + return $this->createHtmlResponse($response['message'], $code); } return new Response($code, ['Content-Type' => 'application/json'], json_encode($response), '1.1', $reason);