Déclenchement validators Symfony 6

Par jmaquaire, il y a 3 ans


Bonjour, je souhaite valider les champs dans un formualiare en symfony sans entity.

Mon controller :

<?php namespace App\Controller; use App\Form\SheetCarrycotType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; class VehiculeController extends AbstractController { #[Route('/vehicule', name: 'app_vehicule')] public function index(Request $request): Response { $form = $this->createForm(SheetCarrycotType::class); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { // Code crétaion PDF } return $this->render('vehicule/index.html.twig', [ 'form' => $form, 'breadcrumb' => 'Véhicule / Déclaration changement de conducteur nacelle', 'title' => 'Déclaration changement de conducteur nacelle => Plateau/Fourgon/Kangoo' ]); } }

Mon FormType :

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; use Symfony\Component\Validator\Constraints\NotBlank; class SheetCarrycotType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add("immatriculation", TextType::class, [ "attr" => [ "class" => "form-control fst-italic text-black", "placeholder" => "0", ], "constraints" => [ new NotBlank([ "message" => "Veuillez saisir une immatriculation", ]) ], ]) ->add("kilometrage", IntegerType::class, [ "attr" => [ "class" => "form-control fst-italic text-black", "placeholder" => "0", ], "constraints" => [ new NotBlank([ "message" => "Veuillez saisir une immatriculation", ]) ], ])

Mon twig :

{{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }} <fieldset class="border border-lg border-warning p-4 mb-2 rounded-xl"> <legend class="p-4 h4 text-center border border-lg border-warning-soft mb-4">Rappel </legend> <div class="text-gray-700 m-4"> <span class="fw-800">Opérateur nacelle :</span> Titulaire d'un CACES R486, d'une fiche d'aptitude médicale et d'une autorisation de conduite en cours de validité. Former au port et à l'utilisation du harnais.</br> <span class="fw-800">Surveillant nacelle :</span> Avant l'intervention, il doit être sensibilisé par l'opérateur nacelle afin de pouvoir effectuer toutes les manoeuvres de secours et d'alerte aux secours encas de besoin.</br></br>J'ai sensibilisé aux manoeuvres de secours le surveillant de manoeuvre nacelle.</br> </div> <div class="m-2 mx-4"> <div class="form-check form-check-inline"> <input class="form-check-input" type="checkbox" name="Rappel_Plateau" id="inlineCheckbox1" required> <label class="form-check-label text-gray-700" for="inlineCheckbox1">J'ai pris connaissance des rappels ci-dessus</label> </div> </div> </fieldset> <fieldset class="border border-lg border-info p-4 mb-2 rounded-xl"> <legend class="p-4 h4 text-center border border-lg border-info-soft mb-4">Identification de la nacelle</legend> <!-- Form Row --> <div class="row gx-3mb-3"> <!-- Form Group (immatriculation)--> <div class="col-md-6 pb-2"> <div class="form-floating"> {{ form_widget(form.immatriculation) }} <label class="fst-italic text-gray-600" for="sheet_carrycot_immatriculation">Immatriculation :</label> <div class="invalid-feedback">Veuillez saisir une immatriculation (Format -> AA-123-CC)</div> </div> </div> <!-- Form Group (kilométrage)--> <div class="col-md-6 pb-2"> <div class="form-floating"> {{ form_widget(form.kilometrage) }} <label class="fst-italic text-gray-600" for="">Kilométrage(s) :</label> <div class="invalid-feedback">Veuillez saisir un nombre (Format -> 1234565.....)</div> </div> </div> </div> <div class="col-2 p-2 d-flex align-items-stretch justify-content-end"> <button class="btn btn-blue" type="submit">{{ button_label|default('Enregistrer') }}</button> </div> {{ form_end(form) }}

Ce que je veux

Je souhaite l'affichage des erreurs

Ce que j'obtiens

Rien ne se passe

Aucune réponse