Symfony et Validator (suite)

Publié par Aline Bunelle Ven 21 déc 2007 17:01:00 GMT

Résumé en image

article presse webpulser

Validation d’un formulaire

Il est toujours assez lourd de développer un formulaire qui gére les erreurs, réaffiche le formulaire (rempli avec les données qui viennent d’être saisies) avec les erreurs sur les champs erronés.

Les types d’erreurs les plus courants sont :
  • Champs non rempli;
  • Login existant;
  • Les deux mots de passe ne correspondent pas;
  • Le mot de passe est trop court;
  • Adresse mail invalide;
  • ... .

Ce genre de traitement va maintenant être très simple à mettre en place. Pour cela nous écrirons un fichier de configuration yaml portnat le nom de notre action dans le dossier validate.

Syntaxe du fichier de configuration de validation

Nous indiquerons dans ce fichier sur quel type de requête doit fonctionner la validation (POST et/ou GET). Puis, nous indiquerons également si nous activons la repopulation des champs et enfin, la validation de nos champs. Voici un exemple de validation :

methods: [post, get]

fillin:
  enabled: on # Active la repopulation

fields:
  login:
    required: yes
      msg: Le champ login doit être rempli.
    sfPropelUniqueValidator:
      class:        User
      column:       pseudo
      unique_error: Ce login est déjà utilisé, merci d'en choisir un autre.

Ici, le champs login ne doit pas être vide, et ne doit pas déjà exister dans la table user champs pseudo.

Ce système est une surcouche de validation aux fonctions validate, les réactions seront les mêmes en cas de validation ou non.

Développement d’un formulaire

Pour que les messages d’erreurs, et la repopulation (si activée) fonctionnent, il ne nous reste que quelques petites choses à ajouter. Tout d’abord l’utilisation du helper Validation :

<?php use_helper('Validation') ?>

Et nous n’avons plus qu’a géré l’erreur et la repopulation :

<table>
    <tr>
        <td colspan="2" align="center"><?= form_error('login') ?></td>
    </tr>
    <tr>
        <td><?= label_for('login', 'Login :') ?></td>
        <td><?= input_tag('login', $sf_params->get('login')) ?></td>
</table>

La fonction form_error nous permettra de récupérer l’erreur (indiquée dans le fichier de configuration). Rien ne s’affiche s’il n’y a pas d’erreur.

$sf_params->get(‘login’) nous permet de récupérer la valeur saisie (eronnée ou non).

Publié sous  | Mots clés  | 1 commentaire

Comments

  1. Alexis a dit 3 months later:

    Super light… mieux vaut lire la doc ( et je suis sincèrement objectif )

(leave url/email »)

   Aide sur le balisage des commentaires Prévisualiser le commentaire