Symfony6 et Symfony 7 Techwall #46 Les formulaires valider vos champs via les validateurs

preview_player
Показать описание
Symfony6 et Symfony 7 Techwall #46 Les formulaires valider vos champs via les validateurs

Le validateur est conçu pour valider les objets selon des contraintes.
Le validateur de symfony est utilisé pour attribuer des contraintes sur les formulaires.
La validation peut être faite de plusieurs façons :
Annotations sur l’entité de base du formulaire
XML
PHP
La méthode isValide() du FORM déclenche le processus de validation

Le validateur est conçu pour valider les objets selon des contraintes.
Le validateur de symfony est utilisé pour attribuer des contraintes sur les formulaires.
La validation peut être faite de plusieurs façons :
Annotations sur l’entité de base du formulaire
XML
PHP
La méthode isValide() du FORM déclenche le processus de validation

Les formulaires ont :

Rôle très important dans le web

Vitrine, interface entre les visiteurs du site web et le contenu du site

Généralement traité en utilisant du html form

La gestion de la soumission des formulaires se fait à l’aide de la méthode handleRequest($request)
HandleRequest vérifie si la requête est de type POST. Si c’est le cas, elle va mapper les données du formulaire avec l’objet affecté au formulaire en utilisant les setters de cet objet. Si aucun objet n’est mapper vous pouvez récupérer directement ces données.
Cette fonction prend en paramètre la requête HTTP de l’utilisateur qui est encapsulé dans Symfony au sein d’un objet de la classe Request de HttpFoundation.
Vous pouvez récupérer les données envoyées via votre formulaire en accédant au champ via la méthode getData() de l’objet form.
Exemple : $form-getData() retourne un tableau associatif avec les données envoyées par le formulaire.
Chaque élément aura comme clé le contenu de l’attribut name dans le formulaire.

Symfony et les formulaires : le composant Form

Bibliothèque dédiée aux formulaires

La philosophie de Symfony pour les formulaires est la suivante :
Vision 1
Un formulaire est l’image d’un objet existant
Le formulaire sert à alimenter cet objet.
Vision 2
Un formulaire sert à récupérer des informations indépendantes de n’importe quel objet.
La création du formulaire se fait de 2 façons différentes :

1) Dans le contrôleur qui va utiliser le formulaire

2) En externalisant la définition dans un fichier

Afin de rendre les formulaires réutilisables, Symfony permet l’externalisation des formulaires en des objets.
Convention de nommage : L’objet du formulaire doit être nommé comme suit NomObjetType
Cet objet doit obligatoirement étendre la classe AbstractType
Deux méthodes doivent obligatoirement être implémentées :
buildForm(FormBuilderInterface $builder, array $options) qui est la méthode qui va permettre la création et la définition du formulaire
Il y a aussi la méthode configureOptions qui permet de définir l’objet associé au formulaire. Cette fonction est obligatoire si vous voulez associer votre form à une classe.
Maker permet aussi d’automatiquement générer la classe du formulaire
php bin/console make:form FormNameType
symfony console make:form FormNameType
Exemple :
php bin/console make:form PersonneType
Maker vous demandera si votre formulaire est associé à une entité ou non. Répondez selon votre besoin.
La récupération du formulaire au niveau des contrôleurs devient beaucoup plus facile :
$form = $this-createForm(TacheType::class, $entity);
Le second parameter n’est pas obligatoire
Afin d’afficher le formulaire crée, il faut transmettre la vue de ce formulaire à la page Twig qui doit l’accueillir.
La méthode createView de l’objet Form permet de créer cette vue
Il ne reste plus qu’à l’envoyer à la page twig en question
Exemple :
$form= $this-createForm (ExempleType::class,$exemple) );

'form'=$form-createView()));

Deux méthodes permettent d’afficher le formulaire dans Twig :
1) Afficher directement la totalité du formulaire avec la méthode form
{{ form(nomDuFormulaire) }}

2) Afficher les composants du formulaire séparément un à un ( généralement lorsqu’on veut personnaliser les différents champs)
Рекомендации по теме
Комментарии
Автор

J'ai remarqué à 8:21 que le décorateur #[Assert\NotBlank] ne marche que pour la création d'une personne. Si j'essaie d'éditer une personne existante, j'obtiens une erreur : "Expected argument of type "string", "null" given at property path "firstname"."

Ysekai