<?php
namespace App\Controller;
use App\Entity\Article;
use App\Entity\CategoryArticle;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\VarDumper\VarDumper;
/**
* Default controller.
*
* @Route("", requirements={"_locale" = "en|fr"})
*/
class ArticleController extends AbstractController
{
/**
* @Route("/article", methods={"GET", "POST"}, name="article_list", options={"sitemap": true, "priority": 0.7, "changefreq": "monthly"})
*
*/
public function indexAction(Request $request, EntityManagerInterface $em)
{
$filter = null;
if($request->getMethod() == "POST"){
$filter = $request->get('search_blog');
}
$articleRepo = $em->getRepository(Article::class);
$categories = $em->getRepository(CategoryArticle::class)->findBy(['deletedAt'=>null], ['sort'=>'ASC']);
$pagination = $articleRepo->getArticlesList($filter);
return $this->render('app/article/list.html.twig', array(
'pagination' => $pagination,
'categories' => $categories,
'search' => $filter,
));
}
/**
* @Route("/article/{id}/{slug}", methods={"GET"}, name="article_show", options={"sitemap": true, "priority": 0.7, "changefreq": "yearly"})
*
*/
public function showAction(Article $article, EntityManagerInterface $em, $slug)
{
if (!$article) {
return $this->redirectToRoute('homepage');
}
if ($slug != $article->translate()->getSlug()) {
return $this->redirectToRoute("article_show", ['id' => $article->getId(), 'slug' => $article->translate()->getSlug()]);
}
if(!$this->isGranted('ROLE_ADMIN') && !$article->isActive()){
return $this->redirectToRoute('article_list');
}
$articles = $em->getRepository('App:Article')->getOthers($article);
return $this->render('app/article/show.html.twig', array(
'article' => $article,
'articles' => $articles
));
}
}