Bonjour,
Je me retrouve confronté à un bug que je n'arrive pas à résoudre :
Quand je poste un formulaire par exemple une inscription mais que je ne mets aucune donnée dans les champs de ce dit formulaire, il ne me retourne pas l'erreur notEmpty :
[code]
var $register_validate = array(
'login' => array(
'rule' => 'notEmpty',
'message' => 'Vous devez préciser un identifiant',
'rule' => 'notFreeLogin',
'message' => 'Votre identifiant est déjà utilisé',
'rule' => 'notSpecial',
'message' => 'Votre identifiant ne peut pas contenir de caractères spéciaux'
),
'password' => array(
'rule' => 'notEmpty',
'message' => 'Vous devez préciser un mot de passe',
'rule' => 'notLenght',
'message' => 'Votre mot de passe est trop court'
),
'confirm' => array(
'rule' => 'notEmpty',
'message' => 'Vous devez confirmer votre mot de passe'
),
'mail' => array(
'rule' => 'notEmpty',
'message' => 'Vous devez préciser un email',
'rule' => 'notValid',
'message' => 'L\'adresse email n\'est pas valide',
'rule' => 'notFreeMail',
'message' => 'L\'adresse email est déjà utilisée'
),
);
[/code]
[code]
function register_validates($data){
$errors = array();
foreach ($this->register_validate as $k => $v) {
if(!isset($data->$k)){
$errors[$k] = $v['message'];
}else{
if($v['rule'] == 'notEmpty'){
if(empty($data->$k)){
$errors[$k] = $v['message'];
}
}elseif($v['rule'] == 'notValid'){
if(!filter_var($data->$k, FILTER_VALIDATE_EMAIL)){
$errors[$k] = $v['message'];
}
}elseif($v['rule'] == 'notFreeLogin') {
$user = $this->check_pseudo($data->$k);
if(!empty($user)){
$errors[$k] = $v['message'];
}
}elseif($v['rule'] == 'notLenght') {
if(strlen($data->$k) < 6){
$errors[$k] = $v['message'];
}
}elseif ($v['rule'] == 'notSpecial') {
if(preg_match('/[^a-z0-9]/i', $data->$k) !== 0){
$errors[$k] = $v['message'];
}
}elseif($v['rule'] == 'notFreeMail') {
$mail= $this->check_mail($data->$k);
if(!empty($mail)){
$errors[$k] = $v['message'];
}
}
}
}
$this->errors = $errors;
if(isset($this->Form)){
$this->Form->errors = $errors;
}
if(empty($errors)){
return true;
}
return false;
}
[/code]
Je pense que le problème vient du fait qu'il y est plusieurs rules pour un même champ mais je ne vois pas comment le corriger ?