I’m attempting to validate an input field for the username. I created a callback function to report back if the user input already exists as a name in the database or not but every time it reports back that it does exist. Even when there’s nothing in the database. The call to the function save is from a jquery ajax request.
public function save()
{
$output_status = 'Error';
$output_title = 'Not processed';
$output_message = 'The request was unprocessed!';
$this->form_validation->set_rules('username', 'User Name', 'required|trim|xss_clean|callback_username_check');
if ($this->form_validation->run())
{
$user_saved = $this->users_model->save_user($this->input->post('username'), $this->input->post('user_directory_name'), $this->input->post('user_status'));
if ($user_saved)
{
$output_status = 'Success';
$output_title = 'User Created';
$output_message = 'User was successfully created!';
}
else
{
$output_title = 'User Not Created';
$output_message = 'User was not successfully created!';
}
}
else
{
$output_title = 'Form Not Validated';
$output_message = validation_errors();
}
echo json_encode(array('status' => $output_status, 'title' => $output_title, 'message' => $output_message));
}
public function username_check($title_name)
{
$username_exists = $this->users_model->get_user(array('username' =>$username));
if (is_null($username_exists))
{
$this->form_validation->set_message('username_check', 'The username already exists!');
return FALSE;
}
else
{
return TRUE;
}
}
You can do that from rule:
$this->form_validation->set_rules(‘username’, ‘Username’, ‘required|is_unique[users.username]’);