peLmeL.org
Accueil du site > peLmeL Blog > Copix > Utilisation des validateurs sur Copix : Partie 2

Utilisation des validateurs sur Copix : Partie 2

mercredi 31 décembre 2008, par Brice Favre


Après une introduction aux validateurs, qui a permit de mieux comprendre l’utilisation de ceux-ci, nous allons maintenant en généralisé l’utilisation. Le but est d’en systématiser et automatiser l’usage.

Créer sa classe de validateur

Tout d’abord il convient de créer une fichier myvalidator.class.php dans le répertoire classes de votre module. Celle ci étends la classe abstraite CopixAbstractValidator :

  1. class MyValidator extends CopixAbstractValidator {   
  2.  
  3. }

Nous allons ensuite mettre en place notre validateur, pour celà il suffit d’utiliser la méthode _validate ($pValue). Celle ci est appelée au moment de l’appelle de la méthode check de vos objets validateur.

Pour tester ceci on va simplement renvoyer un tableau contenant un message d’erreur de test :

  1. <?php
  2. classe MyValidator extends CopixAbstractValidator {   
  3.  
  4.     protected function _validate ($pValue){
  5.         return array ('Message d\'erreur');
  6.     }
  7. }

Dans l’actiongroup, il suffit d’appeller le validateur de la manière suivante :

  1. $value = 'valeur de test';
  2. $res = _validator ('monmodule|myvalidator')->check ($value);
  3. print_r ($res);

Maintenant que le principe est défini, reprenons et intégrons le validateur défini dans l’article précédent. Pour celà nous allons attacher à chaque valeur à vérifier son validateur. Ensuite il suffira de passer dans le check du validateur un tableau ou un objet contenant les valeurs à vérifier comme celui ci :

  1. <?php
  2. $arValue = array (
  3.   // Récupération du téléphone
  4.   'telephone'=>_request ('telephone'),
  5.   // Récupération du nom
  6.   'nom' => _request ('nom'),
  7.   // Récupération du prénom
  8.   'prenom' => _request ('prenom'),
  9.   // Récupération de la date de naissace
  10.   'datenaissance' => _request ('datenaissance'));

Les validateurs complexes

Notre tableau de valeurs est maintenant près, il ne reste plus qu’à créer un validateur complexe et d’appeler la méthode AttachTo pour lier validateur et valeurs à valider.

  1. private function _validate ($pValue){
  2.   $validateur = _ctValidator (); // _ctValidator équivaut à un new CopixComplexTypeValidator  ();
  3.   //  On vérifie la présence des nom et prénom
  4.   $validateur->attachTo (_validator ('notempty'), array ('nom', 'prenom'));
  5.  // On vérifie que la date de naissance est d'un bon format
  6.  $validateur->attachTo (_validator ('date'), 'datenaissance');
  7.  
  8.   /**
  9.    * Dernière étape :
  10.    * on attache un validateur composite au téléphone
  11.    * qui vérifiera si le téléphone est présent et de bon format
  12.    */
  13.   $validateur->attachTo (_cValidator() ->attach (_validator ('notEmpty'))->attach (_validator ('phone')), 'telephone');
  14.  
  15.   // On renvoie le résultat
  16.   return $validateur->check ($pValue);
  17. }

Personnaliser ses messages d’erreur

En affichant les retours du validateur, on obtient les messages per défaut des validateurs de bases. Pour utiliser vos propres messages, il faudra modifier les appels de validateurs en ajoutant un troisième paramètre contenant le message d’erreur à renvoyer si une erreur de vérification s’opère, exemple :

  1. $validateur->attachTo (_validator ('notempty'), array ('nom', 'prenom'), 'Veuillez remplir les champs nom et prénom');
  2.  
  3.  $validateur->attachTo (_validator ('date', null, 'La date de naissance est incorrecte'), 'datenaissance');
  4.  
  5.   $validateur->attachTo (_cValidator() ->attach (_validator ('notEmpty', null, 'Veuillez remplir le champ téléphone'))->attach (_validator ('phone', null, 'Format du téléphone incorrect')), 'telephone');

Réutilisation

L’avantage de créer un validateur est sa réutilisation. En effet, il est désormais possible d’appeler dans tous vos modules le validateur en place de la manière suivante :

  1. $validator = _validator ('monmodule|myvalidator');

De la même manière vous pouvez réutiliser le validateur au sein de validateur complexes. Ce principe est extrêmement utile dans les classes métiers, comme, par exemple, une famille composée de personnes.

Conclusion

Ces deux articles sont une présentation relativement exhaustive de l’utilisation courantes des validateurs sur Copix. Ils vous permettront de mieux découper vos traitements de données du reste de votre code. Très pratique lorsqu’un projet est très avancé et que l’on doit ajouter ou enlever des vérifications dans des formulaires. N’hésitez pas à nous faire part de vos expériences sur le forum Copix.

Un elephpant rose.

Répondre à cet article


Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | SPIP | squelette