<?php namespace App\Controller; use App\Entity\GTicket; use App\Form\GTicketFormType; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class RegTicketController extends AbstractController { private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } /** * Route a appeler en cas de succés, doit etre avant la route app_ticket_reg, * sinon c'est la route app_ticket_reg qui est affichée * @Route("/ticket/ok", name="app_ticket_success") */ public function success(): Response { return $this->render('RegTicket/success.html.twig', []); } /** * @Route("/ticket/{num}", name="app_ticket_reg") */ public function index(string $num, Request $request): Response { // Création de l'objet vide a remplir avec le formulaire $ticket = new GTicket(); // Création du formulaire $form = $this->createForm(GTicketFormType::class,$ticket); // Note : Le formlaire de class GTicketFormType à été créé avec la commande // -> symfony console make:form GTicketFormType GTicket // On rattache la requête http au formulaire pour qu'il puisse y récupérer des infos $form->handleRequest($request); // Suivant ce qu'il a récuperé comme info depuis la requete // on voit si le formulaire a été soumis depuis la page précédente -> $form->isSubmitted() // et si les réponse sont valide -> $form->isValid() if ($form->isSubmitted() && $form->isValid()) { // enregistrement du ticket dans la base de donnée, via l'entityManager $this->entityManager->persist($ticket); $this->entityManager->flush(); // on redirige vers la page "success" return $this->redirectToRoute('app_ticket_success',[]); } // Si le formulaire n'a pas été soumis ou si il n'est pas valide, on le re-affiche. return $this->render('RegTicket/index.html.twig', [ 'num' => $num, 'form'=> $form->createView() ]); } }