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