2011-06-13 4 views
1

Puis-je afficher un seul message pour les champs de formulaires multiples dans CodeIgniter? Par exemple, j'ai défini les règles suivantes pour les champs e-mail et mot de passe. Je veux afficher un seul message si l'un de ces deux champs n'est pas valide. (. Par exemple, e-mail valide ou mot de passe «)Validation de formulaire Codeigniter

$this->form_validation->set_rules('email_address', 'Email Address', 'valid_email|required'); 
$this->form_validation->set_rules('password', 'Password', 'required|min_length[4]'); 

Comment je peux faire Merci pour toute aide

Edit:?.. Désolé si ma question n'est pas clair Actuellement, je suis en utilisant validation_errors() et i Toutefois, je souhaite afficher le même message d'erreur si l'un des deux champs (adresse électronique ou mot de passe) est invalide: si le courrier électronique est invalide ou si le mot de passe est invalide, ou si les deux sont invalides, imprime un seul message, tel que: e-mail ou mot de passe invalide

+2

comment vous affichez les erreurs dans les vues ? – Vamsi

+0

@Krish en ce moment j'affiche toutes les erreurs par ' '. Mais cette méthode imprimera email et mot de passe les deux erreurs séparément. Je veux afficher seulement une seule erreur si l'un des champs est invalide. – Roman

+2

une meilleure question est, pourquoi voulez-vous afficher une seule erreur? l'utilisateur ne saura pas quel champ ils ont rempli incorrectement –

Répondre

3

Je ne sais pas si c'est ce dont vous avez besoin, mais vous pouvez essayer:

if($this->form_validation->run() == FALSE){ 
    $message = 'Your error message here'; //validation_errors() works too. 
}else{ 
    $message = 'Your success message here'; 
} 

$this->load->view('yourview',array('feedback_message'=>$message)); 

Si vous ne vous souciez pas du champ qui n'est pas valide, cet extrait est correct. "Quelque chose ne va pas, je me fiche de ce qui ne va pas, dis-le à l'utilisateur".

+1

C'est la solution logique s'il n'utilise que ces deux champs, ou ne se soucie pas de montrer des erreurs pour les autres, mais 'validation_errors()' montrera toutes les erreurs - pas exactement ce que veut OP. –

+0

validation_errors() juste sorties les erreurs? N'a-t-il pas besoin d'un écho, d'une impression ou autre? –

+1

@Jorge: Ce que je veux dire, c'est qu'il contient une chaîne avec *** tout *** les erreurs rencontrées en validant le formulaire. Exactement le contraire de ce que veut OP. En fait, sa question n'est pas très claire du tout: il demande des messages pour la validation des * champs * lorsque les messages de validation de formulaire s'appliquent aux ensembles de règles/champs. –

0
$this->form_validation->set_message('rule', 'Error Message'); 

Je pense, mettre le même message d'erreur pour les deux règles feront le travail;)

+0

Je me demande si un tableau au lieu d'une chaîne fonctionnerait comme un message ... –

+0

Définir le même message d'erreur pour les deux ne fonctionnerait pas, ils seraient tous deux affichés s'il passe en revue toutes les erreurs. –

+0

Pour votre édition - comment l'utiliseriez-vous * réellement * dans l'exemple d'OP? Cela ne fonctionne pas car il y a 2 champs et plusieurs règles. –

3

itérer sur chaque champ et vérifier à l'aide form_error(), ajouter les noms de champ non valide à une seule chaîne d'erreur :

if($this->form_validation->run() == FALSE){ 
    $fields = array('email_address', 'password'); 
    $invalid_fields = array(); //where we'll store invalid field names 
    foreach($fields as $field){ 
     if(form_error($field)){ 
     $invalid_fields[] = $field; 
     } 
    } 
    $data['error_message'] = 'The following fields are invalid: ' . implode(",", $invalid_fields); 
} 
$this->load->view('yourview', $data); //if !empty($error_message) in view echo it out 
1

à votre avis, vous pouvez simplement faire ceci:

<?php if(!empty($this->form_validation->_error_array)): ?> 
    <p>There were some errors.</p> 
<?php endif; ?> 
Questions connexes