Add start of homepage and FrontControler (don't run it)

Rebase modification
pull/17/head
DahmaneYanis 1 year ago
parent 4aa2bde233
commit 02dbf269f9

@ -0,0 +1,8 @@
@startuml
class FrontController {
- router : AltoRouter
}
@enduml

@ -18,8 +18,7 @@ use App\Validation\ValidationFail;
use App\Controller\ErrorController; use App\Controller\ErrorController;
$loader = new FilesystemLoader('../src/Views/');
$twig = new \Twig\Environment($loader);
$basePath = get_public_path(); $basePath = get_public_path();
$con = new Connexion(get_database()); $con = new Connexion(get_database());
@ -28,49 +27,7 @@ $con = new Connexion(get_database());
$router = new AltoRouter(); $router = new AltoRouter();
$router->setBasePath($basePath); $router->setBasePath($basePath);
$sampleFormController = new SampleFormController(new FormResultGateway($con), $twig); //$sampleFormController = new SampleFormController(new FormResultGateway($con), $twig);
$editorController = new EditorController(new TacticModel(new TacticInfoGateway($con))); //$editorController = new EditorController(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));
$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) { $frontController = new FrontController($router);
header('Content-type: application/json');
echo $response->getJson();
}

@ -0,0 +1,72 @@
<?php
use App\Controller\ErrorController;
use App\Http\ViewHttpResponse;
use App\Validation\ValidationFail;
class FrontController{
private AltoRouter $router;
private UserControler $userControler;
public function __construct(AltoRouter $router){
$this->router = $router;
}
public function main() {
$this->toRoute();
}
private function toRoute(){
$this->router->map("GET", "/", fn() => $this->userControler->home());
// $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));
$match = $this->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']);
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;
}
} else if ($response instanceof JsonHttpResponse) {
header('Content-type: application/json');
echo $response->getJson();
}
http_response_code($response->getCode());
}
}
Loading…
Cancel
Save