src/Controller/NewsController.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\News;
  4. use App\Form\NewsType;
  5. use App\Repository\NewsRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. /**
  13.  * 
  14.  * @Route("/")
  15.  * @Security("is_granted('ROLE_USER')", message="vous devez être connecté pour accéder à la ressource")
  16.  */
  17. class NewsController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/", name="news_index", methods={"GET"})
  21.      */
  22.     public function index(NewsRepository $newsRepository): Response
  23.     {
  24.         return $this->render('news/index.html.twig', [
  25.             'news' => $newsRepository->findAll(),
  26.         ]);
  27.     }
  28.     /**
  29.      * @Route("/new", name="news_new", methods={"GET", "POST"})
  30.      */
  31.     public function new(Request $requestEntityManagerInterface $entityManager): Response
  32.     {
  33.         $news = new News();
  34.         $form $this->createForm(NewsType::class, $news);
  35.         $news->setAuthor($this->getUser());
  36.         $form->handleRequest($request);
  37.         if ($form->isSubmitted() && $form->isValid()) {
  38.             $entityManager->persist($news);
  39.             $entityManager->flush();
  40.             $this->addFlash(
  41.                'success',
  42.                'Nouvelle Article crée !'
  43.             );;
  44.             return $this->redirectToRoute('news_index', [], Response::HTTP_SEE_OTHER);
  45.         }
  46.         return $this->renderForm('news/new.html.twig', [
  47.             'news' => $news,
  48.             'form' => $form,
  49.         ]);
  50.     }
  51.     
  52.     /**
  53.      * @Route("/news/edit/{id}", name="news_edit", methods={"GET", "POST"})
  54.      * @Security("is_granted('ROLE_USER') and user.getEmail() === news.getAuthor().getEmail()", message="cette news ne vous appartients pas")
  55.      */
  56.     public function edit(Request $requestNews $newsEntityManagerInterface $entityManager): Response
  57.     {
  58.         $form $this->createForm(NewsType::class, $news);
  59.         $form->handleRequest($request);
  60.         if ($form->isSubmitted() && $form->isValid()) {
  61.             $entityManager->flush();
  62.             return $this->redirectToRoute('news_index', [], Response::HTTP_SEE_OTHER);
  63.         }
  64.         return $this->renderForm('news/edit.html.twig', [
  65.             'news' => $news,
  66.             'form' => $form,
  67.         ]);
  68.     }
  69.     /**
  70.      * @Route("/news/delete/{id}", name="news_delete", methods={"GET", "POST"})
  71.      * @Security("is_granted('ROLE_USER') and user.getEmail() === news.getAuthor().getEmail()", message="cette resource que vous voulez effacer ne vous appartient pas")
  72.      */
  73.     public function delete(Request $requestNews $newsEntityManagerInterface $entityManager): Response
  74.     {
  75.         if ($this->isCsrfTokenValid('delete'.$news->getId(), $request->request->get('_token'))) {
  76.             $entityManager->remove($news);
  77.             $entityManager->flush();
  78.         }
  79.         return $this->redirectToRoute('news_index', [], Response::HTTP_SEE_OTHER);
  80.     }
  81.     /**
  82.      * @Route("/news/{id}", name="news_show", methods={"GET"})
  83.      */
  84.     public function show(News $news): Response
  85.     {
  86.         return $this->render('news/show.html.twig', [
  87.             'news' => $news,
  88.         ]);
  89.     }
  90. }