表单验证回调函数不起作用


Form Validation Call Back Function Not Working

这是我的 CODE 我正在检查用户名是否已在 datbase 中存在 当我验证并提交数据库中输入的表单重复条目时,我希望如果已经存在,它会显示验证错误

我的控制器

public function index()
{
     if($this->input->post('submit'))   {
        $this->form_validation->set_rules('name', 'User Name', 'callback_checkuser');
        $this->form_validation->set_rules('role', 'Role', 'trim|required');
        $this->form_validation->set_rules('pass', 'Password', 'trim|required');
        if($this->form_validation->run()==TRUE)
           {
               $user['u_name']  =   $this->input->post('name');
               $user['role']    =   $this->input->post('role');
               $user['password']=   md5($this->input->post('pass'));
               $u_id =  $this->custom_model->add_user($user);
               if($u_id){
                  $data['msg']  =   'Successfully Created!!!!';
               }
           }
        }
     $this->load->template('add_user', $data);
}
function checkuser($name) {
    if($this->custom_model->check_name($name) == false) {
        false;
    }else {
        $this->form_validation->set_message('checkuser', 'This user already exist');
        return true;
    }
}

这是我的模型

public function check_name($name) {
        $sql = "SELECT * FROM users WHERE u_name='".$name."' ";
        $query = $this->db->query($sql);
        $res = $query->row_array();
        if (is_array($res) && count($res) > 0){
            return $res;
        }
        return false;
    }

函数 checkuser 中缺少一个 return 语句,但更重要的是,您应该反转返回的值。根据文档中的示例,当您由于验证错误而设置验证消息时,应返回 false ,并在验证通过时返回 true

所以添加一个return,并更改布尔值。顺便说一句,你真的不需要else子句,"存在"这个词需要一个额外的"s"

function checkuser($name) {
    if ($this->custom_model->check_name($name) == false) {
        return true; // the user does not yet exist, so all is OK
    }
    $this->form_validation->set_message('checkuser', 'This user already exists');
    return false; // this is a duplicate user name: not OK
}

使用这个:

$this->form_validation->set_rules('name', 'User Name', 'trim|required|is_unique[users.u_name]');// trim and required added too

文档。