From 53038a5022361e935e62f148f75e251e23539bd0 Mon Sep 17 00:00:00 2001 From: Colin FRIZOT Date: Tue, 22 Nov 2022 08:47:06 +0100 Subject: [PATCH] Ajoute le News Controller --- public/index.php | 1 + src/Silex/Controller/UserController.php | 7 +++++++ src/Silex/Gateway/NewsGateway.php | 19 ++++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/public/index.php b/public/index.php index ca12d70..f956b2f 100644 --- a/public/index.php +++ b/public/index.php @@ -11,5 +11,6 @@ $loader->register(); $controller = new \Silex\Controller\UserController(); $router = new Router($_SERVER['REQUEST_URI']); $router->get('/^$/', [$controller, 'index']); +$router->get('/^news\/(?[\w-]+)$/', [$controller, 'viewPost']); //$router->get('/^inscription$/', [$controller, 'connexion']); $router->run(new \Silex\DI\DI())->render(__DIR__ . '/../' . VIEW_PATH); diff --git a/src/Silex/Controller/UserController.php b/src/Silex/Controller/UserController.php index 767a666..5e915b0 100644 --- a/src/Silex/Controller/UserController.php +++ b/src/Silex/Controller/UserController.php @@ -14,4 +14,11 @@ class UserController $news = $di->getNewsGateway()->getPaginatedRecentNews(); return new HttpResponse(200, 'home', ['news' => $news]); } + + public function viewPost(DI $di, array $params): HttpResponse + { + $newsId = intval($params['id']); + $news = $di->getNewsGateway()->getById($newsId); + return new HttpResponse(200, 'home', ['news' => $news]); + } } diff --git a/src/Silex/Gateway/NewsGateway.php b/src/Silex/Gateway/NewsGateway.php index d2ee725..0c2c3af 100644 --- a/src/Silex/Gateway/NewsGateway.php +++ b/src/Silex/Gateway/NewsGateway.php @@ -30,8 +30,25 @@ class NewsGateway } $news = []; while ($data = $req->fetch()) { - $news[] = new News($data['title'], $data['content'], DateTime::createFromFormat('Y-m-d H:i:s', $data['publication_date'])); + $news[] = $this->createNews($data); } return $news; } + + public function getById(int $id): News + { + $req = $this->pdo->prepare('SELECT * FROM news WHERE id_news=:id;'); + $req->bindValue(':id', $id, PDO::PARAM_INT); + if (!$req->execute()) { + return null; + } + $data = $req->fetch(); + $news = $this->createNews($data); + return $news; + } + + private function createNews(array $data): News + { + return new News($data['title'], $data['content'], DateTime::createFromFormat('Y-m-d H:i:s', $data['publication_date'])); + } }