2 votes

Règles de validation des formulaires CodeIgniter pour les cases à cocher

J'ai un formulaire avec une case à cocher pour accepter les TOS. Le problème est que je dois ajouter une erreur personnalisée pour cette case à cocher,

    <form>

    <input type="text" name="fname" placeholder="Name" /><?php echo form_error('fname') ?>
    <input type="text" name="email" placeholder="Email" /><?php echo form_error('email') ?>
    <input type="text" name="password" placeholder="Password" /><?php echo form_error('password') ?>

    <input type="checkbox" name="accept_terms" value="yes" /> Accept TOS<br>
    <?php echo form_error('accept_terms') ?>

    </form>

PHP

<?php 

 $this->form_validation->set_rules('fname','First Name','trim|required|xss_clean');
 $this->form_validation->set_rules('email','Email','trim|required|xss_clean|valid_email');
 $this->form_validation->set_rules('password','Password','trim|required|xss_clean');
 $this->form_validation->set_rules('accept_terms','TOS','trim|required|xss_clean'); // Need to add custom error message 

if ( $this->form_validation->run() === TRUE ) {

}else{

}
?>

Lorsque l'utilisateur ne sélectionne pas TOS, alors je dois dire que

Veuillez lire et accepter nos termes et conditions.

Note : J'ai ajouté form_error pour afficher les erreurs individuelles

10voto

Rikesh Points 15608

Je vais faire quelque chose comme ça,

if ($this->form_validation->run() === TRUE ) {
   if(!$this->input->post('accept_terms')){
      echo "Please read and accept our terms and conditions.";
      // Redirect
   }
}
else{

}

Et pour un message personnalisé, vous pouvez appeler une fonction de validation personnalisée comme,

$this->form_validation->set_rules('accept_terms', '...', 'callback_accept_terms');

Et ensuite mettre en place cette méthode dans le contrôleur :

function accept_terms() {
    if (isset($_POST['accept_terms'])) return true;
    $this->form_validation->set_message('accept_terms', 'Please read and accept our terms and conditions.');
    return false;
}

0voto

Vous pouvez mettre la valeur=1 et vérifier avec codeigniter comme ceci :

<input type="checkbox" name="accept_terms" value="1" /> Accept TOS<br>
$this->form_validation->set_rules('accept_terms','TOS','trim|required|xss_clean|greater_than[0]');

]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X