Description
Les validateurs de type complexes permettent de rassembler un ensemble de validateurs à appliquer sur les propriétés d'un objet ou clef d'un tableau.
Par exemple, on peut définir un validateur de type complexe permettant de valider les données d'une personne.
Ces validateurs se distingue des autres car on associe des validateurs à des propriétés / clefs.
On associe un validateur à une propriété grâce à la méthode "attachTo". Pour spécifier un ensemble de propriétés obligatoires, on utilisera la méthode "required".
Création d'un validateur de type complexe
Il est possible de créer un validateur de type complexe grâce à 3 méthodes :
- Le créer directement avec le mot clef "new" (new CopixComplexTypeValidator ())
- L'obtenir grâce à l'utilisation de la fabrique (CopixValidatorFactory::createComplexType ())
- L'obtenir grâce au racourcis (_ctValidator ())
Message personnalisé
Les messages d'erreurs des validateurs sont définis dans les fichiers de propriétés de copix. Pour passer un message personnalisé, il convient de le déclarer au moment de la création du validateur :
- new CopixComplexTypeValidator ('message erreur');
- En raccourci : _ctValidator ('message erreur');
Exemple
<?php //Une personne dispose d'un nom, d'un prénom (qui ne contiennent pas de chiffres) et d'une date de naissance inférieure à la date du jour $personneValidate = _ctValidator ()->attachTo (_validator ('preg', '/[a-zA-Z]+$/'), array ('nom', 'prenom')) ->attachTo (_validator ('date', array ('max'=>date (CopixI18N::getDateFormat ()))), 'datenaissance'); $personne = new Personne ('Nom', 'Prenom', '01/01/1978'); $personneValidate->check ($personne);//ok $personne = new Personne ('Nom1', 'Prenom1', '01/01/3985'); $personneValidate->check ($personne);//KO avec 3 erreurs //On défini que la propriété date est obligatoirement remplie $personneValidate = _ctValidator ()->attachTo (_validator ('preg', '/[a-zA-Z]+$/'), array ('nom', 'prenom')) ->attachTo (_validator ('date', array ('max'=>date (CopixI18N::getDateFormat ()))), 'datenaissance'); ->required ('date'); //il est possible de passer un tableau à la méthode required $personneValidate = _ctValidator ()->attachTo (_validator ('preg', '/[a-zA-Z]+$/'), array ('nom', 'prenom')) ->attachTo (_validator ('date', array ('max'=>date (CopixI18N::getDateFormat ()))), 'datenaissance'); ->required (array ('date', 'nom', 'prenom')); //passage d'un message d'erreur personnaliés $personneValidate = _ctValidator ("nom ou prenom invalide")->attachTo (_validator ('preg', '/[a-zA-Z]+$/'), array ('nom', 'prenom')); ?>
