La documentation officielle se trouve ici : https://symfony.com/doc/current/validation.html
Depuis le S3, nous écrivons systèmatiqument le code suivant pour enregistrer un formulaire :
Ce code fait deux choses. Il vérifie que le formulaire a été soumis, et qu'il est valide. Jusqu'a présent le coté "validation" n'est pas géré car nous n'avons pas mis de règles de validation sur nos formulaires. Nous allons donc voir comment ajouter des règles de validation sur nos formulaires.
Pour ajouter des règles de validation sur un champ, nous allons utiliser les contraintes de validation. Pour cela nous devons modifier notre formulaire ArticleType
:
Dans cet exemple nous avons ajouté une contrainte de type Length
sur le champ designation
. Nous avons également ajouté une contrainte de type NotBlank
sur le champ description
. Nous pouvons ajouter autant de contraintes que nous le souhaitons sur un champ.
La liste des contraintes par défaut est disponible sur la documentation de Symfony.
Pour chaque contrainte on peut définir un message. Ce message sera affiché sous le champs qui pose problème. (form_errors
dans le thème de votre formulaire pour le personnaliser).
Cette syntaxe est intéressante, mais ne vérifie les données que si le formulaire est soumis. Dans les autres cas, les données ne sont pas forcéments validées. Selon votre fonctionnement, il peut être nécessaire de les valider (exemple envoie depuis une API, import de données, ...).
Pour valider les entités, nous allons utiliser les annotations de validation. Les possibilités sont les mêmes que pour les contraintes de validation sur les formulaires. La syntaxe utilise les attributs (depuis PHP 8.0) ou les annotations (PHP 7.4 et inférieur).
Pour cela nous pouvons modifier notre entité Adresse
par exemple, pour le code postal :
Ajoutez les contraintes de validations sur vos formulaires. Testez les en soumettant des données invalides.
Personnalisés l'affiche des erreurs dans vos formulaires