setBasePath($basePath); $sampleFormController = new SampleFormController(new FormResultGateway($con), $twig); $editorController = new EditorController(new TacticModel(new TacticInfoGateway($con))); $visualizerController = new VisualizerController(new TacticModel(new TacticInfoGateway($con))); $router->map("GET", "/", fn() => $sampleFormController->displayFormReact()); $router->map("POST", "/submit", fn() => $sampleFormController->submitFormReact($_POST)); $router->map("GET", "/twig", fn() => $sampleFormController->displayFormTwig()); $router->map("POST", "/submit-twig", fn() => $sampleFormController->submitFormTwig($_POST)); $router->map("GET", "/tactic/new", fn() => $editorController->makeNew()); $router->map("GET", "/tactic/[i:id]/edit", fn(int $id) => $editorController->openEditorFor($id)); $router->map("GET", "/tactic/[i:id]/view", fn(int $id) => $visualizerController->openVisualizer($id)); $match = $router->match(); if ($match == null) { http_response_code(404); ErrorController::displayFailures([ValidationFail::notFound("Cette page n'existe pas")], $twig); return; } $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 { $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; } } else if ($response instanceof JsonHttpResponse) { header('Content-type: application/json'); echo $response->getJson(); }