From cd6beb562817f0b763cfa18e1b3ba19d5dc264b3 Mon Sep 17 00:00:00 2001 From: Colin FRIZOT Date: Tue, 6 Dec 2022 09:24:09 +0100 Subject: [PATCH] Ajoute la redirection avec le slug --- src/Silex/Controller/AdminController.php | 4 ++-- src/Silex/Controller/UserController.php | 3 +++ src/Silex/Model/News.php | 5 +++++ views/home.php | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Silex/Controller/AdminController.php b/src/Silex/Controller/AdminController.php index 315fcdb..72ab36b 100644 --- a/src/Silex/Controller/AdminController.php +++ b/src/Silex/Controller/AdminController.php @@ -16,7 +16,7 @@ class AdminController if ($_SERVER['REQUEST_METHOD'] === 'POST') { $news = new News(-1, $_POST['title'], $_POST['content'], new DateTime(), $di->getSecurity()->getCurrentUserId()); $di->getNewsGateway()->insert($news); - HttpResponse::redirect($di->getRouter()->url('news/' . $news->getId())); + HttpResponse::redirect($di->getRouter()->url($news->getSlugRedirect())); } $news = new News(-1, '', '', new DateTime(), $di->getSecurity()->getCurrentUserId()); return HttpResponse::found('edit', ['news' => $news]); @@ -28,7 +28,7 @@ class AdminController if ($_SERVER['REQUEST_METHOD'] === 'POST') { $news = new News($news->getId(), $_POST['title'], $_POST['content'], $news->getPublicationDate(), $news->getAuthorId()); $di->getNewsGateway()->update($news); - HttpResponse::redirect($di->getRouter()->url('news/' . $news->getId())); + HttpResponse::redirect($di->getRouter()->url($news->getSlugRedirect())); } return HttpResponse::found('edit', ['news' => $news]); } diff --git a/src/Silex/Controller/UserController.php b/src/Silex/Controller/UserController.php index 93581dd..f86f9bc 100644 --- a/src/Silex/Controller/UserController.php +++ b/src/Silex/Controller/UserController.php @@ -35,6 +35,9 @@ class UserController { $newsId = intval($params['id']); $news = $di->getNewsGateway()->getById($newsId); + if($news->getSlug() !== $params['slug']){ + HttpResponse::redirect($di->getRouter()->url($news->getSlugRedirect())); + } return new HttpResponse(200, 'newsView', ['news' => $news]); } diff --git a/src/Silex/Model/News.php b/src/Silex/Model/News.php index c4f401b..423cab3 100644 --- a/src/Silex/Model/News.php +++ b/src/Silex/Model/News.php @@ -38,6 +38,11 @@ class News return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $this->title))); } + public function getSlugRedirect(): string + { + return 'news/' . $this->getSlug() . '-'. $this->getId(); + } + public function getContent(): string { return $this->content; diff --git a/views/home.php b/views/home.php index 36247a2..b48b091 100644 --- a/views/home.php +++ b/views/home.php @@ -7,7 +7,7 @@

Hello world!

- +