src/Controller/MealController.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Meal;
  4. use App\Form\MealType;
  5. use App\Repository\MealRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Knp\Component\Pager\PaginatorInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. class MealController extends AbstractController
  15. {
  16.     #[Route('/plat'name'meal.index'methods: ['GET'])]
  17.     public function index(MealRepository $repositoryPaginatorInterface $paginatorRequest $request): Response
  18.     {
  19.         $meals $paginator->paginate(
  20.             $repository->findAll(),
  21.             $request->query->getInt('page'1),
  22.             100 /*limit per page*/
  23.         );
  24.         return $this->render('pages/meal/index.html.twig', [
  25.             'meals' => $meals
  26.         ]);
  27.     }
  28.     #[Route('/plat/nouveau'name'meal.new'methods: ['GET''POST'] )]
  29.     #[IsGranted('ROLE_ADMIN')]
  30.     public function new(
  31.         Request $request,
  32.         EntityManagerInterface $manager
  33.         ) : Response 
  34.     {
  35.         $meal = new Meal();
  36.         $form $this->createForm(MealType::class, $meal);
  37.         $form->add('submit',SubmitType::class, [
  38.             'attr' => [
  39.                 'class' => 'btn btn-primary mt-4'
  40.             ],
  41.             'label' => 'Créer le plat'
  42.         ]);
  43.         $form->handleRequest($request);
  44.         if($form->isSubmitted() && $form->isValid()){
  45.            $meal $form->getData();
  46.            $manager->persist($meal);
  47.            $manager->flush();
  48.             $this->addFlash(
  49.                 'success',
  50.                 'Votre plat a bien été créé !'
  51.             );
  52.            return $this->redirectToRoute('meal.index');
  53.         }
  54.         return $this->render('pages/meal/new.html.twig', [
  55.             'form' => $form->createView()
  56.         ]);
  57.     }
  58.     
  59.     #[Route('/plat/edition/{id}''meal.edit'methods: ['GET','POST'])]
  60.     #[IsGranted('ROLE_ADMIN')]
  61.     public function edit(
  62.         MealRepository $repository
  63.         int $id,
  64.         Request $request
  65.         EntityManagerInterface $manager
  66.         ) : Response
  67.     {
  68.         $meal $repository->findOneBy(["id" => $id]);
  69.         $form $this->createForm(MealType::class, $meal);
  70.         $form->add('submit',SubmitType::class, [
  71.             'attr' => [
  72.                 'class' => 'btn btn-primary mt-4'
  73.             ],
  74.             'label' => 'Modifier le plat'
  75.         ]);
  76.         $form->handleRequest($request);
  77.         if($form->isSubmitted() && $form->isValid()){
  78.            $meal $form->getData();
  79.            $manager->persist($meal);
  80.            $manager->flush();
  81.             $this->addFlash(
  82.                 'success',
  83.                 'Votre plat a bien été modifié !'
  84.             );
  85.            return $this->redirectToRoute('meal.index');
  86.         }
  87.         return $this->render('pages/meal/edit.html.twig', [
  88.             'form' => $form->createView()
  89.         ]);
  90.     }
  91.     #[Route('/plat/suppression/{id}''meal.delete'methods: ['GET'])]
  92.     #[IsGranted('ROLE_ADMIN')]
  93.     public function delete(
  94.     EntityManagerInterface $manager
  95.     MealRepository $repository
  96.     int $id,) : Response
  97.     {
  98.         $meal $repository->findOneBy(["id" => $id]);
  99.         $manager->remove($meal);
  100.         $manager->flush();
  101.         $this->addFlash(
  102.             'success',
  103.             'Votre plat a bien été supprimé !'
  104.         );
  105.         return $this->redirectToRoute('meal.index');
  106.     }
  107. }