Vamos agora adicionar a validação no formulário de criação das Bacias Hidrográficas e em seguida, no próximo post, finalizar a aplicação com o CRUD dos rios.
A validação no CodeIgniter é feita através da biblioteca "form_validation", o único problema que eu tive com ela, foi o fato da mesma não aceitar acentos da língua portuguesa, para resolvermos isso, vamos extender a classe do core realizando uma modificação no código da função alpha().
Para ver as mensagens dos erros de validação em português, é necessário baixar este arquivo, em seguida descompactar a pasta pt_br em sirh/system/language, feito isso, agora abra o arquivo config.php (dentro da pasta config) e mude a linha 69 para: $config['language'] = "pt-br";
Temos então que copiar o arquivo Form_validation.php da pasta /system/libraries para a pasta /system/application/libraries, agora abra o arquivo copiado e procure pela função alpha(), comente o return dela, e faça a seguinte alteração:
function alpha($str) { //return ( ! preg_match("/^([a-z])+$/i", $str)) ? FALSE : TRUE; return (!preg_match("/^([A-Za-zá-úÁ=Ú.\s])+$/i", $str)) ? FALSE : TRUE; }
Modificada a expressão regular, agora é possível trabalhar com palavras acentuadas.
Abra o controller bacia.php, vamos adicionar a validação nas funções insere() e atualizar(). Para isso é necessário Carregar a biblioteca form_validation no método construtor do controlador:
function __construct() { parent::_construct(); $this->load->model('bacia_model'); $this->load->library('form_validation'); }
A função insert() ficará assim:
function insere() { // o campo é requerido e deve ser uma string (alpha) $this->form_validation->set_rules('nome_bacia', 'Nome da Bacia', 'required|alpha'); // caso a validação não passe, carregue a view com o array $data if ($this->form_validation->run() == FALSE) { $data['titulo'] = "SIRH - Nova Bacia Hidrográfica | Erro na Validação, preencha corretamente!"; $data['cabecalho'] = "Criar Bacia Hidrográfica | Preencha Corretamente!"; $this->load->view('bacia_new', $data); } else { $this->bacia_model->insert(); $this->session->set_flashdata('msg', 'Registro Criado com Sucesso!'); redirect('bacia'); } }
e a update():
function atualizar() { $id = $this->input->post('id_bacia'); $this->form_validation->set_rules('nome_bacia', 'Nome da Bacia', 'required|alpha'); // caso a validação não passe, carregue a view com o array $data if ($this->form_validation->run() == FALSE) { $data['titulo'] = "SIRH - Editar Bacia Hidrográfica | Erro na Validação, preencha corretamente!"; $data['cabecalho'] = "Editar Bacia Hidrográfica | Preencha Corretamente!"; $data['registro'] = $this->bacia_model->get_where($id); $this->load->view('bacia_new', $data); } else { $this->bacia_model->update($id); $this->session->set_flashdata('msg', 'Registro Atualizado com Sucesso!'); redirect('bacia'); } }
A regra adicionada não permite que o campo "nome" da Bacia Hidrográfica fique sem preenchimento (required), e será permitido apenas o preenchimento com texto (alpha). Para sinalizar as mensagens de erro, Abra a view bacia_new.php e adicione a função abaixo, logo depois do cabeçalho:
<p><?= validation_errors(); ?></p>
É isso... no próximo post vou mostrar como ficará o CRUD da tabela rio. Um abraço e até lá!
Nenhum comentário:
Postar um comentário