Como criar regras de validação em arquivo com o codeigniter 4

Esta é uma maneira de criar regras de validação do lado do servidor com o #codeigniter 4 com #validation https://codeigniter.com/user_guide/libraries/validation.html#running-validation.

 

 

A vantagem deste conceito é que deixamos nosso #controller mais limpo e nossas regras mais organizadas.

Neste exemplo vamos ver uma pequena amostra deste tipo de validação com arquivo com um cadastro de usuário.

Você pode validar qualquer tipo de dado e até criar regras de validação customizadas.

Temos ;

name - requerido
email - requerido, e-mail válido e único na table users
username - requerido, mínimo 4 de comprimento e único na table users
password - regra de exmplo customizada para validar um senha (comprimento mínimo 5)
user_group - requerido e inteiro natural não zero/nulo.
status -   requerido e inteiro natural não zero/nulo.

Criando as regras no arquivo app/Config/Validation.php

// --------------------------------------------------------------------
// Rules

public $users = [
  'name' => 'required',
  'email'=> 'required|valid_email|is_unique[users.email,id,{id}]',
  'username'  => 'required|min_length[4]|is_unique[usuarios.username,id,{id}]',
  'password'  => 'password[5,{id}]', // Você pdoe adicionar mais regras aqui
  'user_group'  => 'required|is_natural_no_zero',
  'status'  => 'required|is_natural_no_zero'
];

// --------------------------------------------------------------------

Instanciando a biblioteca no método do controller.

$validation = \Config\Services::validation();

Testando as validações. O if de teste recebe o método de validação enviando o $post a validar.

if ($this->data['validation']->run($post, 'tasks_save')) {
// todo...
// Execute as ações quando a validação passar.


// Neste exemplo, considerando que tudo correu bem estamos redirecionando o usuário para a tela principal de determinado cadastro com uma mensagem de sucesso.

A mensagem de sucesso está configurada em app/Language/pt-BR/FlashMessages.php onde criamos um arquivo para gerenciar nossas flashMessages.

  
return redirect()->to('todo/tasks/new')->with('message', lang('FlashMessages.sucesso'));

}

// Caso algo dê errado.
Carregamos a view normalmente e enviamos o array de erros para que ele seja exibido na view.

$errors = $validation->getErrors();

return view('new', ['errors' => $errors]); // Agora só precisamos testar na view se há erros e exibí-los para o usuário.

Na view você pdoe verificar se há erros com o hasError() ou getError()

$validation->getError('name');

if($validation->getError('name')){
// coloque aqui a mensagem para o erro no campo name
}