CodeIgniter - Validação de Formulário
A validação é um processo importante durante a construção de um aplicativo da web. Ele garante que os dados que estamos obtendo são adequados e válidos para armazenar ou processar. O CodeIgniter tornou essa tarefa muito fácil. Vamos entender esse processo com um exemplo simples.
Exemplo
Criar um arquivo de visualização myform.php e salve o código abaixo em application/views/myform.php. Esta página exibirá um formulário onde o usuário pode enviar seu nome e nós validaremos esta página para garantir que ela não fique vazia durante o envio.
<html>
<head>
<title>My Form</title>
</head>
<body>
<form action = "" method = "">
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Name</h5>
<input type = "text" name = "name" value = "" size = "50" />
<div><input type = "submit" value = "Submit" /></div>
</form>
</body>
</html>
Criar um arquivo de visualização formsuccess.php e salve em application/views/formsuccess.php. Esta página será exibida se o formulário for validado com sucesso.
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
Crie um arquivo de controlador Form.php e salve em application/controller/Form.php. Este formulário mostrará erros se não for validado corretamente ou redirecionado paraformsuccess.php página.
<?php
class Form extends CI_Controller {
public function index() {
/* Load form helper */
$this->load->helper(array('form'));
/* Load form validation library */
$this->load->library('form_validation');
/* Set validation rule for name field in the form */
$this->form_validation->set_rules('name', 'Name', 'required');
if ($this->form_validation->run() == FALSE) {
$this->load->view('myform');
}
else {
$this->load->view('formsuccess');
}
}
}
?>
Adicione a seguinte linha em application/config/routes.php.
$route['validation'] = 'Form';
Vamos executar este exemplo visitando a seguinte URL no navegador. Este URL pode ser diferente com base no seu site.
http://yoursite.com/index.php/validation
Isso produzirá a seguinte tela -
Adicionamos uma validação no controlador - Nameé um campo obrigatório antes de enviar o formulário. Portanto, se você clicar no botão enviar sem inserir nada no campo do nome, será solicitado que você insira o nome antes de enviar, conforme mostrado na tela abaixo.
Após inserir o nome com sucesso, você será redirecionado para a tela conforme mostrado abaixo.
No exemplo acima, usamos a configuração de regra necessária. Existem muitas regras disponíveis no CodeIgniter, que são descritas abaixo.
Referência de regra de validação
A seguir está uma lista de todas as regras nativas que estão disponíveis para uso -
Regra | Parâmetro | Descrição | Exemplo |
---|---|---|---|
required |
Não | Retorna FALSE se o elemento do formulário estiver vazio. | |
matches |
sim | Retorna FALSE se o elemento do formulário não corresponder ao do parâmetro. | corresponde a [form_item] |
regex_match |
sim | Retorna FALSE se o elemento do formulário não corresponder à expressão regular. | regex_match [/ regex /] |
differs |
sim | Retorna FALSE se o elemento do formulário não for diferente daquele no parâmetro. | difere [form_item] |
is_unique |
sim | Retorna FALSE se o elemento do formulário não for exclusivo para a tabela e o nome do campo no parâmetro. Nota - Esta regra requer que o Query Builder esteja habilitado para funcionar. | is_unique [table.field] |
min_length |
sim | Retorna FALSE se o elemento do formulário for menor que o valor do parâmetro. | comprimento_min [3] |
max_length |
sim | Retorna FALSE se o elemento do formulário for maior que o valor do parâmetro. | max_length [12] |
exact_length |
sim | Retorna FALSE se o elemento do formulário não for exatamente o valor do parâmetro. | comprimento_exato [8] |
greater_than |
sim | Retorna FALSE se o elemento do formulário for menor ou igual ao valor do parâmetro ou não numérico. | maior do que [8] |
greater_than_equal_to |
sim | Retorna FALSE se o elemento do formulário for menor que o valor do parâmetro ou não for numérico. | maior_que_equal_to [8] |
less_than |
sim | Retorna FALSE se o elemento do formulário for maior ou igual ao valor do parâmetro ou não numérico. | menos do que [8] |
less_than_equal_to |
sim | Retorna FALSE se o elemento do formulário for maior que o valor do parâmetro ou não for numérico. | menos_que_equal_ a [8] |
in_list |
sim | Retorna FALSE se o elemento do formulário não estiver em uma lista predeterminada. | in_list [vermelho, azul, verde] |
alpha |
Não | Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de caracteres alfabéticos. | |
alpha_numeric |
Não | Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de caracteres alfanuméricos. | |
alpha_numeric_spaces |
Não | Retorna FALSE se o elemento do formulário contém qualquer coisa diferente de caracteres alfanuméricos ou espaços. Deve ser usado após o corte para evitar espaços no início ou no final | |
alpha_dash |
Não | Retorna FALSE se o elemento do formulário contém qualquer coisa diferente de caracteres alfanuméricos, sublinhados ou travessões. | |
numeric |
Não | Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de caracteres numéricos. | |
integer |
Não | Retorna FALSE se o elemento do formulário contém qualquer coisa diferente de um inteiro. | |
decimal |
Não | Retorna FALSE se o elemento do formulário contiver qualquer coisa diferente de um número decimal. | |
is_natural |
Não | Retorna FALSE se o elemento do formulário contém algo diferente de um número natural - 0, 1, 2, 3, etc. | |
is_natural_no_zero |
Não | Retorna FALSE se o elemento do formulário contém qualquer coisa diferente de um número natural, mas não zero - 1, 2, 3, etc. | |
valid_url |
Não | Retorna FALSE se o elemento do formulário não contém um URL válido. | |
valid_email |
Não | Retorna FALSE se o elemento do formulário não contém um endereço de e-mail válido. | |
valid_emails |
Não | Retorna FALSE se algum valor fornecido em uma lista separada por vírgulas não for um e-mail válido. | |
valid_ip |
Não | Retorna FALSE se o IP fornecido não for válido. Aceita um parâmetro opcional de 'ipv4' ou 'ipv6' para especificar um formato de IP. | |
valid_base64 |
Não | Retorna FALSE se a string fornecida contiver qualquer coisa diferente de caracteres Base64 válidos. |