Max F 5 vuotta sitten
vanhempi
commit
0b6c0c2324

+ 12 - 4
src/App/Middlewares/ErrorHandler.php

@@ -5,6 +5,7 @@ namespace KarmaFW\App\Middlewares;
 use \KarmaFW\App\Request;
 use \KarmaFW\App\Response;
 use \KarmaFW\App\ResponseError;
+use \KarmaFW\App\ResponseError404;
 
 
 class ErrorHandler
@@ -25,15 +26,22 @@ class ErrorHandler
             $response = $next($request, $response);
 
         } catch (\Throwable $e) {
+            $code = $e->getCode();
+            $error_message = $e->getMessage();
+            
+            //throw $e;
             $content = null;
 
             if (ENV == 'dev') {
-                $title = "ErrorHandler CATCHED EXCEPTION";
-                $message = '<pre>' . print_r($e, true) . '</pre>';
-                $content = '<title>' . $title . '</title><h1>' . $title . '</h1><p>' . $message . '</p>';
+                //$title = "ErrorHandler CATCHED EXCEPTION";
+                //$message = '<pre>' . print_r($e, true) . '</pre>';
+                //$content = '<title>' . $title . '</title><h1>' . $title . '</h1><p>' . $message . '</p>';
+            }
+
+            if ($code == 404) {
+                return new ResponseError404($error_message);
             }
 
-            //throw $e;
             return new ResponseError(500, $content);
         }
 

+ 18 - 5
src/App/Middlewares/UrlRouter.php

@@ -39,16 +39,29 @@ class UrlRouter
 			$response = $next($request, $response);
 
 		} catch (\Throwable $e) {
+			$code = $e->getCode();
+			$error_message = $e->getMessage();
+
+			//throw $e;
 			$content = null;
 
 			if (ENV == 'dev') {
-				$title = "UrlRouter CATCHED EXCEPTION";
-				$message = '<pre>' . print_r($e, true) . '</pre>';
-				$content = '<title>' . $title . '</title><h1>' . $title . '</h1><p>' . $message . '</p>';
+				//$title = "UrlRouter CATCHED EXCEPTION";
+				//$message = '<pre>' . print_r($e, true) . '</pre>';
+				//$content = '<title>' . $title . '</title><h1>' . $title . '</h1><p>' . $message . '</p>';
+				//$error_message .= PHP_EOL . '<pre>' . print_r($e, true) . '</pre>';
+			}
+
+			if (in_array($code, [301, 302, 310])) {
+				$url = $error_message;
+				return new ResponseRedirect($url, $code);
+			}
+
+			if ($code == 404) {
+				return new ResponseError404($error_message);
 			}
 
-			//throw $e;			
-			return new ResponseError(500, $content);
+			return new ResponseError(500, $error_message);
 		}
 
 		return $response;

+ 1 - 2
src/App/ResponseRedirect.php

@@ -11,9 +11,8 @@ class ResponseRedirect extends Response
 
 	public function __construct($url, $status=302)
 	{
-		parent::__construct('', null); // $content, $content_type
+		parent::__construct($status);
 
-		$this->setStatus($status);
 		$this->url = $url;
 	}
 

+ 1 - 0
src/helpers/helpers_default.php

@@ -54,6 +54,7 @@ if (! function_exists('redirect')) {
 			exit;
 		}
 		header('Location: ' . $url, true, $http_code);
+		throw new \Exception($url, $http_code);
 		exit;
 	}
 }