From 26a27c291d4d643f94f79b6fd22b5b48784b3b73 Mon Sep 17 00:00:00 2001 From: DahmaneYanis Date: Tue, 14 Nov 2023 17:35:01 +0100 Subject: [PATCH] Add FrontController and UserController --- public/index.php | 7 +-- src/Controller/FrontController.php | 72 +++++++++++++++++++----------- src/Controller/UserController.php | 17 +++++++ src/Views/home.twig | 13 ++++++ 4 files changed, 80 insertions(+), 29 deletions(-) create mode 100644 src/Views/home.twig diff --git a/public/index.php b/public/index.php index 9b36d85..4ccdf44 100644 --- a/public/index.php +++ b/public/index.php @@ -6,6 +6,7 @@ require "../sql/database.php"; require "utils.php"; use App\Connexion; +use App\Controller\FrontController; use App\Controller\EditorController; use App\Controller\SampleFormController; use App\Gateway\FormResultGateway; @@ -18,8 +19,6 @@ use App\Validation\ValidationFail; use App\Controller\ErrorController; - - $basePath = get_public_path(); $con = new Connexion(get_database()); @@ -27,7 +26,9 @@ $con = new Connexion(get_database()); $router = new AltoRouter(); $router->setBasePath($basePath); +$frontController = new FrontController($router); +$frontController->route(); + //$sampleFormController = new SampleFormController(new FormResultGateway($con), $twig); //$editorController = new EditorController(new TacticModel(new TacticInfoGateway($con))); -$frontController = new FrontController($router); \ No newline at end of file diff --git a/src/Controller/FrontController.php b/src/Controller/FrontController.php index 5963292..b43023e 100644 --- a/src/Controller/FrontController.php +++ b/src/Controller/FrontController.php @@ -1,27 +1,37 @@ router = $router; + $this->userController = new UserController(); } - public function main() { - $this->toRoute(); + public function run() { + $this->route(); } - private function toRoute(){ - $this->router->map("GET", "/", fn() => $this->userControler->home()); + public function route() + { + $this->router->map("GET", "/", fn() => $this->userController->home()); // $router->map("GET", "/", fn() => $sampleFormController->displayFormReact()); // $router->map("POST", "/submit", fn() => $sampleFormController->submitFormReact($_POST)); // $router->map("GET", "/twig", fn() => $sampleFormController->displayFormTwig()); @@ -33,39 +43,49 @@ class FrontController{ $match = $this->router->match(); if ($match == null) { - http_response_code(404); + $loader = new FilesystemLoader('../src/Views/'); + $twig = new \Twig\Environment($loader); + http_response_code(HttpCodes::NOT_FOUND); ErrorController::displayFailures([ValidationFail::notFound("Cette page n'existe pas")], $twig); return; } + $this->routeByResponseType($match); + } + private function routeByResponseType(array $match) + { $response = call_user_func_array($match['target'], $match['params']); + http_response_code($response->getCode()); if ($response instanceof ViewHttpResponse) { - $file = $response->getFile(); - $args = $response->getArguments(); - - switch ($response->getViewKind()) { - case ViewHttpResponse::REACT_VIEW: - send_react_front($file, $args); - break; - case ViewHttpResponse::TWIG_VIEW: - try { - $loader = new FilesystemLoader('../src/Views/'); - $twig = new \Twig\Environment($loader); - $twig->display($file, $args); - } catch (\Twig\Error\RuntimeError|\Twig\Error\SyntaxError $e) { - http_response_code(500); - echo "There was an error rendering your view, please refer to an administrator.\nlogs date: " . date("YYYD, d M Y H:i:s"); - throw e; - } - break; - } + + $this->displayByViewKind($response); } else if ($response instanceof JsonHttpResponse) { header('Content-type: application/json'); echo $response->getJson(); } + } - http_response_code($response->getCode()); + private function displayByViewKind(ViewHttpResponse $response){ + $file = $response->getFile(); + $args = $response->getArguments(); + + switch ($response->getViewKind()) { + case ViewHttpResponse::REACT_VIEW: + send_react_front($file, $args); + break; + case ViewHttpResponse::TWIG_VIEW: + try { + $loader = new FilesystemLoader('../src/Views/'); + $twig = new \Twig\Environment($loader); + $twig->display($file, $args); + } catch (\Twig\Error\RuntimeError | \Twig\Error\SyntaxError $e) { + http_response_code(500); + echo "There was an error rendering your view, please refer to an administrator.\nlogs date: " . date("YYYD, d M Y H:i:s"); + throw e; + } + break; + } } diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index e69de29..5a7d85a 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/src/Views/home.twig b/src/Views/home.twig new file mode 100644 index 0000000..8b5ce94 --- /dev/null +++ b/src/Views/home.twig @@ -0,0 +1,13 @@ + + + + + + + Document + + +

Test

+ + \ No newline at end of file