Eu criei a seguinte classe para validar meus formulários:
<?php
Class validaform{
protected $CI;
function __construct(){
$this->CI =& get_instance();
}
public function criaConta(){
$this->CI->form_validation->set_rules("nome", "Nome", "required");
$this->CI->form_validation->set_rules("email", "Email", "required|valid_email|callback_email_em_uso");
$this->CI->form_validation->set_rules("confirm-email", "Confirmar Email", "required|valid_email|matches[email]");
$this->CI->form_validation->set_rules("senha", "Senha", "required");
$this->CI->form_validation->set_rules("confirm-senha", "Comfirmar Senha", "required|matches[senha]");
$this->CI->form_validation->set_error_delimiters("<b style='color: red'> (", ")</b>");
return $this->CI->form_validation->run();
}
public function login($dadosLogin){
$this->CI->form_validation->set_rules("email", "Email", "required|valid_email");
$this->CI->form_validation->set_rules("senha", "Senha", "required");
$dadosForamInseridos = $this->CI->form_validation->run();
$usuarioEhValido = $this->CI->UsuarioDao->buscaUsuario($dadosLogin);
if($dadosForamInseridos && $usuarioEhValido) return true;
return false;
}
public function novaCategoria(){
$this->CI->form_validation->set_rules("nome", " ", "required|callback_categoria_ja_existe");
$this->CI->form_validation->set_rules("usuario_id", "Id usuario", "required|numeric");
$this->CI->form_validation->set_error_delimiters("<p class = 'alert-danger'>", "</p>");
return $this->CI->form_validation->run();
}
public function edicaoCategoria($dadosCategoria){
$this->CI->form_validation->set_rules("nome", " ", "required|callback_categoria_ja_existe");
$this->CI->form_validation->set_rules("id", "Id", "required|numeric");
$this->CI->form_validation->set_rules("usuario_id", "Id usuario", "required|numeric");
$this->CI->form_validation->set_error_delimiters("<p class='alert-danger'>", "</p>");
$dadosInseridos = $this->CI->form_validation->run();
$manteveMesmoNome = $this->CI->CategoriaDao->ehValidoEditarMesmoNome($dadosCategoria['nome'], $dadosCategoria['id']);
if($dadosInseridos || $manteveMesmoNome) return true;
return false;
}
#minhas resgras de validação
public function email_em_uso($email){
$emailsEmUso = $this->CI->UsuarioDao->busca('email');
foreach ($emailsEmUso as $emailEmUso){
if($emailEmUso['email'] == strtolower($email)){
$this->CI->form_validation->set_message("email_em_uso", "Este email já está sendo utilizado");
return FALSE;
}
}
return TRUE;
}
public function categoria_ja_existe($nome){
$usuario = $this->CI->login->usuarioLogado();
$nomeCategoriasExistentes = $this->CI->CategoriaDao->busca('nome', $usuario->id);
foreach($nomeCategoriasExistentes as $categoriaExistente){
if(strtolower($categoriaExistente['nome']) == strtolower($nome)){
$this->CI->form_validation->set_message("categoria_ja_existe", "Essa categoria já existe");
return FALSE;
}
}
return TRUE;
}
}
Contudo quando eu tento enviar o formulário surge o seguinte erro:
"Não existe uma mensagem de erro para o campo com o nome.(categoria_ja_existe)"
O mesmo acontece para a outra validação que eu criei, já tentei passar a função com e sem callback, mas nada adiantou, desde já agradeço pela ajuda.
ps: a classe em questão se trata de uma lib (n sei se isso interfere em algo)