L3 Info : PHP et Applications Web
 
◃  Ch. 13 Symfony 7.4  ▹
 

Retour sur la validation des formulaires

  • Symfony 7.4 permet l'utilisation des attributs PHP

    • Avantages : purement déclaratif, facilement maintenable
    • Où : directement dans les entités

      namespace App\Entity;
      
      use Symfony\Component\Validator\Constraints as Assert;
      
      class Auteur
      {
        #[Assert\NotBlank]
        public string $aut_nom;
      
        #[Assert\NotBlank]    
        public string aut_prenom;
      }
  • Attributs usuels :

    Attribut Description
    [#Assert\NotNull] Vérifie que la valeur est renseignée.
    [#Assert\NotBlank] Vérifie que la valeur n’est pas vide.
    [#Assert\Email] Valide le format d’un email.
    [#Assert\Length(min:2, max:50)] Contrôle la longueur d’une chaîne.
    [#Assert\Positive] Vérifie qu’un nombre est strictement positif.
    [#Assert\Choice(choices: ["M", "F"])] Restreint les valeurs possibles.
    [#Assert\Regex(pattern: "/^[A-Za-z]+$/")] Valide via une expression régulière.
  • Personnalisation des messages d'erreur :

    • Les messages peuvent être personnalisés directement dans l’attribut :
      #[Assert\NotBlank(message: "Veuillez saisir un nom d'utilisateur.")]
    • Utilisation de variables dans les messages :
      #[Assert\Email(message: "L'email {{ value }} n'est pas valide.")]
  • Validation coté contrôleur : (plus fiable que côté HTML)

    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
    // la méthode isValid réalise la validation
    }
  • Côté twig : affichage des erreurs possible

    {{ form_errors(form) }}
    {{ form_widget(form) }}