<?php
namespace App\Controller\Posts;
use App\Entity\Posts\Categorieposts;
use App\Entity\Posts\Posts;
use App\Repository\Posts\PostsRepository;
use Knp\Component\Pager\PaginatorInterface;
use MercurySeries\FlashyBundle\FlashyNotifier;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/sejourner")
*/
class PostsController extends AbstractController
{
/**
* @var FlashyNotifier
*/
private $flashy;
/**
* @var PostsRepository
*/
private $postsRepository;
public function __construct(PostsRepository $postsRepository, FlashyNotifier $flashy)
{
$this->postsRepository = $postsRepository;
$this->flashy = $flashy;
}
/**
* @Route("/{slug}/{id}", name="posts.index")
* @param Request $request
* @param Categorieposts $categorieposts
* @param PaginatorInterface $paginator
* @return Response
*/
public function index(Request $request, Categorieposts $categorieposts, PaginatorInterface $paginator): Response
{
$posts = $paginator->paginate(
$this->getDoctrine()->getRepository(Posts::class)->findBy(['categories' => $categorieposts, 'online' => true], ['id' => 'DESC']), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
return $this->render('pages/internes/posts/index.html.twig', [
'title' => $categorieposts->getName(),
'categorie' => $categorieposts,
'posts' => $posts,
'menu' => "Séjourner",
'current_page' => 'sejourner'
]);
}
/**
* @Route("/details/{slug}/{id}", name="posts.show")
* @param $slug
* @param Posts $post
* @return Response
*/
public function show($slug, Posts $post): Response
{
if ($post->getSlug() !== $slug) {
return $this->redirectToRoute('posts.show', [
'id' => $post->getId(),
'slug' => $post->getSlug(),
], 301);
}
$othersPost = $this->postsRepository->getPostRandom($post, $post->getCategories(), 3);
return $this->render('pages/internes/posts/show.html.twig', [
'title' => $post->getName(),
'post' => $post,
'othersPosts' => $othersPost,
'menu' => "Séjourner",
'current_page' => 'sejourner'
]);
}
}