4.1.4 Règles de validation incluses
La classe de validation de CakePHP contient un certain nombre de règles prédéfinies, qui rendent la validation des données plus simple dans vos modèles. Cette classe contient de nombreuses règles souvent utilisées que vous n'aurez pas à ré-écrire vous même. Ci-dessous vous trouverez une liste complète de toutes les règles, illustrées par des exemples d'utilisation.
4.1.4.1 alphaNumeric
Les données pour ce champ ne doivent contenir que chiffres et lettres.
var $validate = array(
'login' => array(
'rule' => 'alphaNumeric',
'message' => 'Les données pour ce champ ne doivent contenir que lettres et chiffres.'
)
);
var $validate = array('login' => array('rule' => 'alphaNumeric','message' => 'Les données pour ce champ ne doivent contenir que lettres et chiffres.'));
4.1.4.2 between
La longueur des données du champ doit être comprise dans la plage numérique spécifiée. Les valeurs minimum et maximum doivent être toutes les deux fournies. Cette méthode utilise <= et non <.
var $validate = array(
'mot_passe' => array(
'rule' => array('between', 5, 15),
'message' => 'Le mot de passe doit avoir une longueur comprise entre 5 et 15 caractères.'
)
);
var $validate = array('mot_passe' => array('rule' => array('between', 5, 15),'message' => 'Le mot de passe doit avoir une longueur comprise entre 5 et 15 caractères.'));
La longueur des données est "le nombre d'octets dans la représentation des données sous forme de chaîne". Faites attention, car elle peut être plus grande que le nombre de caractères quand vous manipulez des caractères non-ASCII.
4.1.4.3 blank
Cette règle est utilisé pour vérifier que le champ est laissé vide ou que seulement des caractères blancs y sont présent. Les caractères blancs incluent l'espace, la tabulation, le retour chariot et nouvelle ligne.
var $validate = array(
'id' => array(
'rule' => 'blank',
'on' => 'create'
)
);
var $validate = array('id' => array('rule' => 'blank','on' => 'create'));
4.1.4.4 boolean
Les données pour ce champ doivent être une valeur booléenne. Les valeurs possibles sont : true ou false, les entiers 0 ou 1, les chaînes '0' ou '1'.
var $validate = array(
'maCaseACocher' => array(
'rule' => array('boolean'),
'message' => 'Valeur incorrecte pour maCaseACocher'
)
);
var $validate = array('maCaseACocher' => array('rule' => array('boolean'),'message' => 'Valeur incorrecte pour maCaseACocher'));
4.1.4.5 cc
Cette règle est utilisée pour vérifier si une donnée est un numéro de carte de crédit valide. Elle prend trois paramètres : 'type', 'deep' et 'regex'.
Le paramètre 'type' peut être assigné aux valeurs 'fast', 'all' ou à l'une des suivantes :
- amex
- bankcard
- diners
- disc
- electron
- enroute
- jcb
- maestro
- mc
- solo
- switch
- visa
- voyager
Si 'type' est défini à 'fast', cela valide les données de la majorité des formats numériques de cartes de crédits. Définir 'type' à 'all' vérifiera tous les types de cartes de crédits. Vous pouvez aussi définir 'type' comme un tableau des types que vous voulez détecter.
Le paramètre 'deep' devrait être défini comme une valeur booléenne. S'il est défini à true, la validation vérifiera l'algorithme Luhn de la carte de crédit (http://en.wikipedia.org/wiki/Luhn_algorithm). Par défaut, elle est à false.
Le paramètre 'regex' vous permet de passer votre propre expression régulière, laquelle sera utilisée pour valider le numéro de la carte de crédit.
var $validate = array(
'numero_cc' => array(
'rule' => array('cc', array('visa', 'maestro'), false, null),
'message' => 'Le numéro de carte de crédit que vous avez saisi était invalide.'
)
);
var $validate = array('numero_cc' => array('rule' => array('cc', array('visa', 'maestro'), false, null),'message' => 'Le numéro de carte de crédit que vous avez saisi était invalide.'));
4.1.4.6 comparison
Comparison est utilisé pour comparer des valeurs numériques. Il supporte "est supérieur", "est inférieur", "supérieur ou égal", "inférieur ou égal", "égal à" et "non égal". Quelques exemples sont indiqués ci-dessous :
var $validate = array(
'age' => array(
'rule' => array('comparison', '>=', 18),
'message' => 'Vous devez avoir 18 ans au moins pour vous inscrire.'
);
var $validate = array(
'age' => array(
'rule' => array('comparison', 'greater or equal', 18),
'message' => 'Vous devez avoir 18 ans au moins pour vous inscrire.'
)
);
var $validate = array('age' => array('rule' => array('comparison', '>=', 18),'message' => 'Vous devez avoir 18 ans au moins pour vous inscrire.');var $validate = array('age' => array('rule' => array('comparison', 'greater or equal', 18),'message' => 'Vous devez avoir 18 ans au moins pour vous inscrire.'));
4.1.4.7 date
Cette règle s'assure que les données soumises sont des formats de date valides. Un seul paramètre (qui peut être un tableau) doit être passé et sera utilisé pour vérifier le format de la date soumise. La valeur de ce paramètre peut être l'une des suivantes :
- 'dmy', par exemple : 27-12-2006 ou 27-12-06 (les séparateurs peuvent être l'espace, le point, le tiret, le slash)
- 'mdy', par exemple : 12-27-2006 ou 12-27-06 (les séparateurs peuvent être l'espace, le point, le tiret, le slash)
- 'ymd', par exemple : 2006-12-27 ou 06-12-27 (les séparateurs peuvent être l'espace, le point, le tiret, le slash)
- 'dMy', par exemple : 27 Décembre 2006 ou 27 Déc 2006
- 'Mdy', par exemple : Décembre 27, 2006 ou Déc 27, 2006 (la virgule est optionnelle)
- 'My', par exemple : (Décembre 2006 ou Déc 2006)
- 'my', par exemple : 12/2006 ou 12/06 (les séparateurs peuvent être l'espace, le point, le tiret, le slash)
Si aucune clé n'est soumise, la clé par défaut 'ymd' sera utilisée.
var $validate = array(
'naissance' => array(
'rule' => 'date',
'message' => 'Entrez une date valide au format AA-MM-JJ.',
'allowEmpty' => true
)
);
var $validate = array('naissance' => array('rule' => 'date','message' => 'Entrez une date valide au format AA-MM-JJ.','allowEmpty' => true));
Etant donné que de nombreux moteurs de stockage réclament un certain format de date, vous devriez envisager de faire le plus gros du travail en acceptant un large choix de formats et en essayant de les convertir, plutôt que de forcer les gens à les soumettre dans un format donné. Le plus de travail vous ferez pour les utilisateurs, le mieux ce sera.
4.1.4.8 decimal
Cette règle s'assure que la donnée est un nombre décimal valide. Un paramètre peut être passé pour spécifier le nombre de décimales requises après le point. Si aucun paramètre n'est passé, la donnée sera validée comme un nombre scientifique à virgule flottante, entraînant une erreur si aucune décimale n'est trouvée après le point.
var $validate = array(
'prix' => array(
'rule' => array('decimal', 2)
)
);
var $validate = array('prix' => array('rule' => array('decimal', 2)));
4.1.4.9 email
Celle-ci vérifie que la donnée soit une adresse email valide. En passant un booléen true comme second paramètre de cette règle, elle tentera de vérifier aussi, que l'hôte de l'adresse soit valide.
var $validate = array('email' => array('rule' => 'email'));
var $validate = array(
'email' => array(
'rule' => array('email', true),
'message' => 'Merci de soumettre une adresse email valide.'
)
);
var $validate = array('email' => array('rule' => 'email'));var $validate = array('email' => array('rule' => array('email', true),'message' => 'Merci de soumettre une adresse email valide.'));
4.1.4.10 equalTo
Cette règle s'assurera que la valeur est égal à la valeur passée et qu'elle est du même type.
var $validate = array(
'nourriture' => array(
'rule' => array('equalTo', 'gâteau'),
'message' => 'Cette valeur devrait être la chaîne gâteau'
)
);
var $validate = array('nourriture' => array('rule' => array('equalTo', 'gâteau'),'message' => 'Cette valeur devrait être la chaîne gâteau'));
4.1.4.11 extension
Cette règle vérifie les extensions valides de fichier, comme .jpg ou .png. Permet la vérification d'extensions multiples, en les passant sous forme de tableau.
var $validate = array(
'image' => array(
'rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')),
'message' => 'Merci de soumettre une image valide.'
)
);
var $validate = array('image' => array('rule' => array('extension', array('gif', 'jpeg', 'png', 'jpg')),'message' => 'Merci de soumettre une image valide.'));
4.1.4.12 file
Cette règle s'assure que la valeur est un nom de fichier valide. Cette règle de validation n'est pour le moment pas fonctionnelle.
4.1.4.13 ip
Cette règle s'assurera qu'une adresse IPv4 valide ait été soumise.
var $validate = array(
'ip_client' => array(
'rule' => 'ip',
'message' => 'Merci de soumettre une adresse IP valide.'
)
);
var $validate = array('ip_client' => array('rule' => 'ip','message' => 'Merci de soumettre une adresse IP valide.'));
4.1.4.14 isUnique
La donnée pour le champ doit être unique, elle ne peut être utilisée par aucune autre ligne.
var $validate = array(
'login' => array(
'rule' => 'isUnique',
'message' => 'Ce nom d\'utilisateur a déjà été choisi.'
)
);
var $validate = array('login' => array('rule' => 'isUnique','message' => 'Ce nom d\'utilisateur a déjà été choisi.'));
4.1.4.15 minLength
Cette règle s'assure que la donnée satisfait à la longueur minimale requise.
var $validate = array(
'login' => array(
'rule' => array('minLength', '8'),
'message' => 'Les noms d\'utilisateur doivent avoir au moins 8 caractères.'
)
);
var $validate = array('login' => array('rule' => array('minLength', '8'),'message' => 'Les noms d\'utilisateur doivent avoir au moins 8 caractères.'));
La longueur des données est "le nombre d'octets dans la représentation des données sous forme de chaîne". Faites attention, car elle peut être plus grande que le nombre de caractères quand vous manipulez des caractères non-ASCII.
4.1.4.16 maxLength
Cette règle s'assure que la donnée respecte la longueur maximale requise.
var $validate = array(
'login' => array(
'rule' => array('maxLength', '15'),
'message' => 'Les noms d\'utilisateur ne doivent pas dépasser 15 caractères.'
)
);
var $validate = array('login' => array('rule' => array('maxLength', '15'),'message' => 'Les noms d\'utilisateur ne doivent pas dépasser 15 caractères.'));
La longueur ici est "le nombre d'octets dans la représentation des données sous forme de chaîne". Faites attention car elle pourrait être plus grande que le nombre de caractères en manipulant des caractères non-ASCII.
4.1.4.17 money
Cette règle s'assurera que la valeur est une somme monétaire valide.
Le second paramètre définit où le symbole est situé (gauche/droite).
var $validate = array(
'salaire' => array(
'rule' => array('money', 'left'),
'message' => 'Merci de soumettre une somme monétaire valide.'
)
);
var $validate = array('salaire' => array('rule' => array('money', 'left'),'message' => 'Merci de soumettre une somme monétaire valide.'));
4.1.4.18 multiple
Utilisez cette règle pour valider un champ select multiple. Elle accepte les paramètres "in", "max" et "min".
var $validate = array(
'multiple' => array(
'rule' => array('multiple', array('in' => array('do', 'ré', 'mi', 'fa', 'sol', 'la', 'si'), 'min' => 1, 'max' => 3)),
'message' => 'Merci de choisir une, deux ou trois options'
)
);
var $validate = array('multiple' => array('rule' => array('multiple', array('in' => array('do', 'ré', 'mi', 'fa', 'sol', 'la', 'si'), 'min' => 1, 'max' => 3)),'message' => 'Merci de choisir une, deux ou trois options'));
4.1.4.19 inList
Cette règle s'assurera que la valeur est dans un ensemble donné. Elle nécessite un tableau des valeurs. Le champ est valide si sa valeur vérifie l'une des valeurs du tableau donné.
Exemple :
var $validate = array(
'fonction' => array(
'choixAutorise' => array(
'rule' => array('inList', array('Foo', 'Bar')),
'message' => 'Entrez soit Foo, soit Bar.'
)
)
);
var $validate = array('fonction' => array('choixAutorise' => array('rule' => array('inList', array('Foo', 'Bar')),'message' => 'Entrez soit Foo, soit Bar.')));
4.1.4.20 numeric
Vérifie si la donnée passée est un nombre valide.
var $validate = array(
'voitures' => array(
'rule' => 'numeric',
'message' => 'Merci de soumettre le nombre de voitures.'
)
);
var $validate = array('voitures' => array('rule' => 'numeric','message' => 'Merci de soumettre le nombre de voitures.'));
4.1.4.21 notEmpty
La règle de base pour s'assurer qu'un champ n'est pas vide.
var $validate = array(
'titre' => array(
'rule' => 'notEmpty',
'message' => 'Ce champ ne peut pas rester vide'
)
);
var $validate = array('titre' => array('rule' => 'notEmpty','message' => 'Ce champ ne peut pas rester vide'));
Ne l'utilisez pas pour un champ select multiple, sinon cela causera une erreur. A la place, utilisez "multiple".
4.1.4.22 phone
Phone valide les numéros de téléphone US. Si vous voulez valider des numéros de téléphones non-US, vous pouvez fournir une expression régulière comme second paramètre pour couvrir des formats de numéros additionnels.
var $validate = array(
'telephone' => array(
'rule' => array('phone', null, 'us')
)
);
var $validate = array('telephone' => array('rule' => array('phone', null, 'us')));
4.1.4.23 postal
Postal est utilisé pour valider des codes postaux des U.S.A. (us), du Canada (ca), du Royaume-Uni (uk), de l'Italie (it), d'Allemagne (de) et de Belgique (be). Pour les autres formats de codes postaux, vous devez fournir une expression régulière comme second paramètre.
var $validate = array(
'code_postal' => array(
'rule' => array('postal', null, 'us')
)
);
var $validate = array('code_postal' => array('rule' => array('postal', null, 'us')));
4.1.4.24 range
Cette règle s'assure que la valeur est dans une fourchette donnée. Si aucune fourchette n'est soumise, la règle s'assurera que la valeur est un nombre limite valide pour la plateforme courante.
var $validate = array(
'nombre' => array(
'rule' => array('range', -1, 11),
'message' => 'Merci d\'entrer un nombre entre 0 et 10'
)
);
var $validate = array('nombre' => array('rule' => array('range', -1, 11),'message' => 'Merci d\'entrer un nombre entre 0 et 10'));
L'exemple ci-dessus acceptera toutes les valeurs qui sont plus grandes que 0 (par ex, 0.01) et plus petite que 10 (par ex, 9.99). Note : Les deux extrémités données (-1 et 11) ne sont pas incluses !!!
4.1.4.25 ssn
Ssn valide les numéros de sécurité sociale des U.S.A. (us), du Danemark (dk) et des Pays-Bas (nl). Pour les autres formats de numéros de sécurité sociale, vous devez fournir une expression régulière.
var $validate = array(
'ssn' => array(
'rule' => array('ssn', null, 'us')
)
);
var $validate = array('ssn' => array('rule' => array('ssn', null, 'us')));
4.1.4.26 url
Cette règle vérifie les formats valides d'URL. Elle supporte les protocoles http(s), ftp(s), file, news et gopher.
var $validate = array(
'siteweb' => array(
'rule' => 'url'
)
);
var $validate = array('siteweb' => array('rule' => 'url'));
Pour s'assurer qu'un protocole est présent dans l'url, le mode strict mode peut être activé comme ceci.
var $validate = array(
'siteweb' => array(
'rule' => array('url', true)
)
);
var $validate = array('siteweb' => array('rule' => array('url', true)));
