Не удается получить доступ к сообщению об ошибке, соответствующему имени вашего поля, используя обратный вызов функции при проверке формы

#php #codeigniter #validation #continuous-integration

#php #инициатор кодирования #валидация #непрерывная интеграция #codeigniter #проверка

Вопрос:

я создаю свою проверку формы с именем check_nim, но когда я добавляю обратный вызов в проверке формы, я получаю ошибку, из-за которой не удается получить доступ к сообщению об ошибке, соответствующему имени вашего поля Nomor Induk Mahasiswa.(check_nim),

вот мой код:

контроллер user.php

   function daftar_act(){
    $nim = $this->input->post("nim");
    $nim = $this->security->xss_clean($nim);

    function check_nim($nim){
      if($this->db->query("SELECT * FROM akun WHERE nim ='$nim'")->num_rows() > 0){
         $this->form_validation->set_message('check_nim','NIM sudah terdaftar.');
         return false;
      }
      else{
         return true;
      }
    }

    $this->form_validation->set_rules("nim","Nomor Induk Mahasiswa","required|trim|min_length[8]|max_length[8]|callback_check_nim");
  

и это мой взгляд:

daftar.php

 <form action = "<?php echo base_url().'user/daftar_act'; ?> method="post">
   <div class="form-group">
     <label>Nomor Induk Mahasiswa</label>
     <input type="number" name = "nim" class="form-control">
     <?php echo form_error("nim"); ?>
   </div>
   <div class="form-group">
     <button type="submit" class="btn btn-sm btn-primary" name="daftar"> Daftar Akun </button>
   </div>
</form>
  

Комментарии:

1. Пожалуйста, покажите нам весь ваш метод daftar_act и мы хотим видеть эту строку в начале метода $this-> load-> library(‘form_validation’);

Ответ №1:

Я думаю, вы, возможно, не устанавливаете сообщение об ошибке проверки формы для вашего обратного вызова check_nim . Вам нужно установить правильное сообщение об ошибке, используя имя функции обратного вызова следующим образом:

 function check_nim($str)
{
    if ($str == 'test')
    {
        $this->form_validation->set_message('check_nim', 'The {field} field can not be the word "test"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}