<?php
namespace App\Controller\Articles;
use App\Entity\Articles\Articles;
use App\Entity\Articles\Categoriearticles;
use App\Repository\Articles\ArticlesRepository;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/visiter")
*/
class ArticlesController extends AbstractController
{
/**
* @var ArticlesRepository
*/
private $articlesRepository;
public function __construct(ArticlesRepository $articlesRepository)
{
$this->articlesRepository = $articlesRepository;
}
/**
* @Route("/{slug}/{id}", name="articles.index")
* @param Request $request
* @param Categoriearticles $categoriearticles
* @param PaginatorInterface $paginator
* @return Response
*/
public function index(Request $request, Categoriearticles $categoriearticles, PaginatorInterface $paginator): Response
{
$articles = $paginator->paginate(
$this->getDoctrine()->getRepository(Articles::class)->findBy(['categories' => $categoriearticles, 'online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
return $this->render('pages/internes/articles/index.html.twig', [
'title' => $categoriearticles->getName(),
'categorie' => $categoriearticles,
'articles' => $articles,
'menu' => "Visiter",
'current_page' => 'visites'
]);
}
/**
* @Route("/les-incontournables", name="articles.incontournables")
* @param Request $request
* @param ArticlesRepository $articlesRepository
* @param PaginatorInterface $paginator
* @return Response
*/
public function incontournables(Request $request, ArticlesRepository $articlesRepository, PaginatorInterface $paginator): Response
{
$articles = $paginator->paginate(
$articlesRepository->findBy(['incontournable' => true, 'online' => true]), /* query NOT result */
$request->query->getInt('page', 1)/*page number*/,
$request->query->getInt('limit', 12)/*limit per page*/
);
return $this->render('pages/internes/articles/incontournables.html.twig', [
'title' => 'Les incontournables',
'articles' => $articles,
'menu' => "Visiter",
'current_page' => 'visites'
]);
}
/**
* @Route("/details/{slug}/{id}", name="articles.show")
* @param $slug
* @param Articles $article
* @return Response
*/
public function show($slug, Articles $article): Response
{
if ($article->getSlug() !== $slug) {
return $this->redirectToRoute('articles.show', [
'id' => $article->getId(),
'slug' => $article->getSlug(),
], 301);
}
$circuits = [];
if ($article->getCircuitslies()){
foreach ($article->getCircuitslies() as $circuit){
$circuits[] = $this->articlesRepository->find($circuit);
}
}
$othersArticles = $this->articlesRepository->getArticleRandom($article, $article->getCategories(), 3);
return $this->render('pages/internes/articles/show.html.twig', [
'title' => $article->getName(),
'article' => $article,
'ciruits' => $circuits,
'articles' => $othersArticles,
'menu' => "Visiter",
'current_page' => 'visites'
]);
}
}