Utilisation d'un Formulaire

Exemple

<?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()
        ]);
    }
 
}
Vous pourriez laisser un commentaire si vous étiez connecté.