<?php
namespace App\Controller;
use App\Entity\Meal;
use App\Form\MealType;
use App\Repository\MealRepository;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class MealController extends AbstractController
{
#[Route('/plat', name: 'meal.index', methods: ['GET'])]
public function index(MealRepository $repository, PaginatorInterface $paginator, Request $request): Response
{
$meals = $paginator->paginate(
$repository->findAll(),
$request->query->getInt('page', 1),
100 /*limit per page*/
);
return $this->render('pages/meal/index.html.twig', [
'meals' => $meals
]);
}
#[Route('/plat/nouveau', name: 'meal.new', methods: ['GET', 'POST'] )]
#[IsGranted('ROLE_ADMIN')]
public function new(
Request $request,
EntityManagerInterface $manager
) : Response
{
$meal = new Meal();
$form = $this->createForm(MealType::class, $meal);
$form->add('submit',SubmitType::class, [
'attr' => [
'class' => 'btn btn-primary mt-4'
],
'label' => 'Créer le plat'
]);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$meal = $form->getData();
$manager->persist($meal);
$manager->flush();
$this->addFlash(
'success',
'Votre plat a bien été créé !'
);
return $this->redirectToRoute('meal.index');
}
return $this->render('pages/meal/new.html.twig', [
'form' => $form->createView()
]);
}
#[Route('/plat/edition/{id}', 'meal.edit', methods: ['GET','POST'])]
#[IsGranted('ROLE_ADMIN')]
public function edit(
MealRepository $repository,
int $id,
Request $request,
EntityManagerInterface $manager
) : Response
{
$meal = $repository->findOneBy(["id" => $id]);
$form = $this->createForm(MealType::class, $meal);
$form->add('submit',SubmitType::class, [
'attr' => [
'class' => 'btn btn-primary mt-4'
],
'label' => 'Modifier le plat'
]);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$meal = $form->getData();
$manager->persist($meal);
$manager->flush();
$this->addFlash(
'success',
'Votre plat a bien été modifié !'
);
return $this->redirectToRoute('meal.index');
}
return $this->render('pages/meal/edit.html.twig', [
'form' => $form->createView()
]);
}
#[Route('/plat/suppression/{id}', 'meal.delete', methods: ['GET'])]
#[IsGranted('ROLE_ADMIN')]
public function delete(
EntityManagerInterface $manager,
MealRepository $repository,
int $id,) : Response
{
$meal = $repository->findOneBy(["id" => $id]);
$manager->remove($meal);
$manager->flush();
$this->addFlash(
'success',
'Votre plat a bien été supprimé !'
);
return $this->redirectToRoute('meal.index');
}
}