Ajoute la redirection avec le slug

main
Colin FRIZOT 2 years ago
parent 3d490e7ad0
commit cd6beb5628

@ -16,7 +16,7 @@ class AdminController
if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$news = new News(-1, $_POST['title'], $_POST['content'], new DateTime(), $di->getSecurity()->getCurrentUserId()); $news = new News(-1, $_POST['title'], $_POST['content'], new DateTime(), $di->getSecurity()->getCurrentUserId());
$di->getNewsGateway()->insert($news); $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()); $news = new News(-1, '', '', new DateTime(), $di->getSecurity()->getCurrentUserId());
return HttpResponse::found('edit', ['news' => $news]); return HttpResponse::found('edit', ['news' => $news]);
@ -28,7 +28,7 @@ class AdminController
if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$news = new News($news->getId(), $_POST['title'], $_POST['content'], $news->getPublicationDate(), $news->getAuthorId()); $news = new News($news->getId(), $_POST['title'], $_POST['content'], $news->getPublicationDate(), $news->getAuthorId());
$di->getNewsGateway()->update($news); $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]); return HttpResponse::found('edit', ['news' => $news]);
} }

@ -35,6 +35,9 @@ class UserController
{ {
$newsId = intval($params['id']); $newsId = intval($params['id']);
$news = $di->getNewsGateway()->getById($newsId); $news = $di->getNewsGateway()->getById($newsId);
if($news->getSlug() !== $params['slug']){
HttpResponse::redirect($di->getRouter()->url($news->getSlugRedirect()));
}
return new HttpResponse(200, 'newsView', ['news' => $news]); return new HttpResponse(200, 'newsView', ['news' => $news]);
} }

@ -38,6 +38,11 @@ class News
return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $this->title))); 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 public function getContent(): string
{ {
return $this->content; return $this->content;

@ -7,7 +7,7 @@
</div> </div>
<h1>Hello world!</h1> <h1>Hello world!</h1>
<?php foreach ($params['news'] as $news) : ?> <?php foreach ($params['news'] as $news) : ?>
<a href="<?= $router->url('news/' . $news->getSlug() . '-'. $news->getId()) ?>"> <a href="<?= $router->url($news->getSlugRedirect()) ?>">
<div class="card"> <div class="card">
<header class="card-header"> <header class="card-header">
<p class="card-header-title"> <p class="card-header-title">

Loading…
Cancel
Save