Validation spécifique suivant la valeur des différents champs

0 views
Skip to first unread message

Bidibule

unread,
Jul 24, 2008, 8:09:39 AM7/24/08
to Cakephp-fr
Rebonjour à tous,

J'ai une question en ce qui concerne la validation.
J'ai 3 champs et j'aimerais faire une règle spécifique :

- soit le premier cha

Bidibule

unread,
Jul 24, 2008, 8:12:32 AM7/24/08
to Cakephp-fr
Bonjour,

J'ai une question concernant une validation spéciale.
EN gors, j'ai 3 champs et j'aimeraisd faire cette règle :

- soit le premier champ est rempli et les 2 autres peuvent être
facultatifs
- soit le premier n'est pas rempli et alors les 2 autres doivent
l'être

Avec les Custom validation, on ne reçoit que la valeur du champs en
question donc comment faire pour pouvoir créer une règle qui a accès
aux données des autres champs ?

merci

avairet

unread,
Jul 24, 2008, 8:16:12 AM7/24/08
to Cakephp-fr
Tu peux créer une méthode custom de validation et l'appeler dans
beforeSave() ou beforeValidate().

Avairet

Bidibule

unread,
Jul 24, 2008, 8:26:36 AM7/24/08
to Cakephp-fr
Ok donc faire une méthode custom dans le modèle qui renvoie vrai ou
faux en utilisant le beforeValidate().

un truc genre

function beforeValidate(){

if(empty(...) && ...){

return false;
}else
return true;

Ok et donc j'assigne un type d'erreur à une varaible pour afficher
l'erreur ?
Comme je le fais dans le controlleur genre "$this->set('error',2); ??

Quelle est donc la meilleure façon pour faire de l'affichage customisé
dans ma vue avec cette règle pariculière ?
Avec le modèle de validation normale pas de problème c'est déjà pris
en charge.

Merci!

Bidibule

unread,
Jul 24, 2008, 8:30:27 AM7/24/08
to Cakephp-fr
Ok j'avais oublié qu'on pouvait allégrement utiliser les $this->data
dans le modèle.

;o)

PS : je vais essayer d'aller plus loin avant de poster sorry.

avairet

unread,
Jul 24, 2008, 9:02:52 AM7/24/08
to Cakephp-fr
Non, tu ne fais pas :

beforeValidate() {
if (empty($ma_variable)) {
}
}

Mais plutôt :

public function MaValidCustom($ma_variable) {
if (empty($ma_variable)) {
return false;
}
return true;
}


Et après :

public function beforeValidate() {
if ($this->MaValidCustom() === false) {
$this->invalidate('mon_champ_X',__('Problème de validation sur le
champ X',true));
return false;
}
return true;

francky06l

unread,
Jul 24, 2008, 1:44:55 PM7/24/08
to Cakephp-fr
Si ces 3 champs sont dans un formulaire et sauvegardes en meme temps,
tu n'as besoin de mettre quelque chose dans beforeValidate..
Cela evidemment depend du formulaire, mais si les 3 champs sont
present, tu peux aussi utiliser $this->data dans ta function "custom"
de validation.
Reply all
Reply to author
Forward
0 new messages