Symfony et Validator (suite)
Publié par Aline Bunelle
Résumé en image

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).


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