CodeValidação de formulários e envio de formulários no Igniter 4 com exemplo.

⚡ Resumo Inteligente

CodeA validação de formulários do Igniter 4 verifica a entrada do usuário antes de processá-la. Os formulários são construídos com o auxiliar de formulário, e a biblioteca de validação integrada define regras como obrigatório, numérico e único, exibindo erros e repopular campos fixos quando a validação falha.

  • 📝 Formas: Os formulários permitem que os usuários enviem dados, geralmente salvos no banco de dados ou enviados por e-mail.
  • 🧰 Auxiliar de formulário: Funções como form_open, form_input e form_submit geram HTML em conformidade com os padrões.
  • 🛡️ Duas Frentes: A validação no lado do cliente é rápida; a validação no lado do servidor é segura e não pode ser burlada.
  • 📏 Regras: O comando `set_rules` define as verificações de obrigatoriedade, tipo de dados, comprimento, sanitização e unicidade.
  • 🔁 Executar: O método run() retorna falso se alguma regra falhar e verdadeiro quando todas forem aprovadas.
  • ⚠️ Erros: A função `validation_errors()` imprime as mensagens dos campos que falharam.
  • 📌 Formulários adesivos: set_value() repopulará os campos preenchidos corretamente após uma submissão falha.

CodeValidação de formulários Igniter

Formulário em CodeIgnição 4

Os formulários permitem que os usuários interajam com o aplicativo e enviem dados. Um formulário pode ser usado como um formulário de contato, que um visitante do site pode preencher e nos enviar as informações. As informações recebidas geralmente são armazenadas no banco de dados ou enviadas por e-mail.

Estrutura do formulário HTML

O código a seguir mostra a estrutura de um formulário HTML típico.

<form id="frmUsers" name="frmUsers" method="POST" action="create_user.php">
<input type="text" id="user_id" name="user_id">
<input type="password" id="password" name="password">

<input type="submit" value="Submit">
</form>

Aqui:

  • … são as tags de abertura e fechamento do formulário. Os atributos id e name especificam o nome e o ID do formulário. O atributo method especifica o verbo HTTP a ser usado, geralmente POST.
  • Especifica os elementos do formulário. O atributo `name` é o nome da variável enviada ao servidor de backend para processamento.

CodeAuxiliar de formulário Igniter

HTML é fácil de entender e escrever, mas CodeIgnorar Isso torna as coisas ainda mais simples. CodeO Igniter possui funções integradas para criar formulários HTML. Vejamos o seguinte: CodeCódigo de formulário Igniter que utiliza o auxiliar de formulário para criar um formulário:

<?php
echo form_open('create_user.php', ['id' => 'frmUsers']);

echo form_label('User Id', 'user_id');
echo form_input(['name' => 'user_id']);

echo form_label('Password', 'password');
echo form_input(['type' => 'password', 'name' => 'password']);

echo form_submit('btnSubmit', 'Create User');

echo form_close();
?>

Aqui:

  • echo form_open('create_user.php', ['id' => 'frmUsers']); cria a tag de abertura do formulário, define o método como POST e define a ação. URL para create_user.php.
  • echo form_label('User Id', 'user_id'); cria um rótulo que exibe 'User Id' para o campo de entrada chamado user_id.
  • echo form_input(['name' => 'user_id']); cria um campo de entrada de texto chamado user_id.
  • echo form_submit('btnSubmit', 'Criar Usuário'); cria um botão de envio com o rótulo Criar Usuário.
  • echo form_close(); fecha o formulário.

Como você pode ver, os auxiliares de formulário facilitam a criação de formulários usando PHP puro. Ao passar atributos para os métodos auxiliares de formulário, podemos personalizar o HTML gerado para o formulário. O código acima gera o seguinte código HTML para o formulário:

<form action="http://localhost:3000/index.php/create_user.php" id="frmUsers" method="post" accept-charset="utf-8">
<label for="user_id">User Id</label>
<input type="text" name="user_id" value=""/>

<label for="password">Password</label>
<input type="password" name="password" value=""/>

<input type="submit" name="btnSubmit" value="Create User"/>
</form>

A maior vantagem de usar o auxiliar de formulário é que ele gera código semanticamente correto que segue os padrões HTML. Você pode consultar a documentação oficial. CodePara mais detalhes, consulte a documentação do Igniter: https://codeigniter.com/user_guide/helpers/form_helper.html.

CodeExemplo de formulário Igniter

Após abordar os conceitos básicos de CodeIgniter, vamos voltar ao nosso projeto tutorial, no qual temos trabalhado durante todo este período. CodeSérie de tutoriais do IgniterEm resumo, o projeto tutorial cria um aplicativo de gerenciamento de contatos que armazena os detalhes em um banco de dados.

Criar contato

No tutorial anterior, criamos rotas para nossa aplicação e visualizações simples. Abra o arquivo application/views/contacts/create.php e modifique o código de create.php da seguinte forma:

<div class="column">
<h2 class="title">Create Contact</h2>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email" name="email" class="input" type="email" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>

Observação: O código acima usa HTML puro para criar o formulário. Agora, vamos ver como o formulário aparece no navegador. Carregue o seguinte: URL No seu navegador web: http://localhost:3000/contacts/createSe você estiver executando o projeto do tutorial, deverá ver o seguinte:

CodeIgniter cria formulário de contato

Validação de formulários em CodeIgnorar

A validação desempenha um papel crucial no processamento de dados provenientes de formulários. Suponha que um usuário esteja se cadastrando em um site; queremos garantir que ele preencha os dados solicitados e um endereço de e-mail válido. Se estivermos trabalhando com datas, precisamos garantir que os intervalos de datas sejam válidos; portanto, não aceitaríamos uma data com 32 dias em um mês.

A validação resolve esses problemas. CodeA validação do Igniter é feita em duas frentes ao trabalhar com aplicações web.

A validação do lado do cliente é feita no navegador da web, geralmente com HTML e JavaScript. Isso melhora o desempenho porque tudo é feito no cliente, então não há necessidade de enviar os dados para o servidor. A desvantagem é que o usuário tem controle sobre isso; se você depender de JavaScript para validar e o usuário desabilita JavaScript, sua validação falhará.

A validação no servidor é feita no próprio servidor. A desvantagem é que o usuário precisa enviar os dados para o servidor e aguardar a resposta, o que consome recursos de rede e pode prejudicar o desempenho. A principal vantagem é um maior controle e a garantia de que as regras de validação funcionarão mesmo se o usuário desativar a validação. JavaRoteiro.

Uma estratégia melhor é usar a validação do lado do cliente como estratégia principal e a validação do lado do servidor como mecanismo de contingência.

Adicionando regras de validação de formulário

CodeO Igniter possui uma biblioteca de validação integrada. A biblioteca é carregada usando a seguinte linha:

$this->load->library('form_validation');

O CodeA biblioteca de validação de formulários Igniter pode executar algumas das seguintes ações:

  • Verifica os campos obrigatórios. Analisa os valores enviados e retorna um erro se um campo marcado como obrigatório estiver vazio.
  • Validação do tipo de dados – alguns campos podem exigir apenas valores numéricos. Se um valor não numérico for detectado, a biblioteca retorna um erro e interrompe o envio do formulário.
  • Validação de comprimento – alguns campos exigem um número mínimo ou máximo de caracteres. A biblioteca de validação lida com esses casos.
  • Higienização de dados – a biblioteca pode remover código malicioso dos dados enviados para garantir a segurança. Se os valores enviados tiverem código malicioso ativo, isso será feito através de um processo de higienização. JavaEm casos de injeção de script ou SQL, a biblioteca remove o código malicioso, tornando-o inútil.
  • Validar campos únicos do banco de dados – imagine que você tenha um formulário de inscrição usando um endereço de e-mail e queira garantir que o endereço seja único. A biblioteca facilita a verificação dos dados enviados em relação a uma tabela e campo do banco de dados.

As regras de validação são definidas usando o seguinte formato:

$this->form_validation->set_rules('field','human readable field','rule',['custom message']);

Aqui:

  • 'field' especifica o nome do campo do formulário que será validado pela biblioteca.
  • 'Campo legível por humanos' especifica o formato legível por humanos do campo, exibido ao usuário quando ocorre um erro.
  • 'rule' especifica a regra de validação a ser aplicada, como obrigatório, numérico ou comprimento mínimo.
  • ['Mensagem personalizada'] é opcional e permite definir uma mensagem de validação personalizada que será exibida quando a regra falhar.

O seguinte é um CodeExemplo de Igniter para validação do número de contato:

$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');

Aqui:

  • O código acima verifica se o campo `contact_number` foi preenchido. Caso contrário, retorna um erro informando que o campo "Número de contato" é obrigatório.

Para executar a validação de acordo com as regras definidas, utilizamos a seguinte função da biblioteca de validação:

$this->form_validation->run()

Se o código acima retornar falso, significa que uma ou mais regras definidas falharam. Se retornar verdadeiro, significa que todas as regras de validação foram aprovadas e você pode prosseguir com as próximas ações.

Vejamos mais exemplos de regras de validação. Suponha que você queira validar vários campos, como o nome do contato, o número de telefone e o endereço de e-mail. Você pode usar o seguinte código:

$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);

$this->form_validation->set_rules($rules);

Aqui:

  • No exemplo acima, fornecemos uma matriz de campos com regras para a função `set_rules` da biblioteca. Isso facilita a validação de vários campos.

Validação Única

Se quisermos validar o número de contato para garantir que não o salvemos duas vezes, podemos usar a seguinte regra:

$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');

Aqui:

  • O operador | é usado para encadear várias regras.
  • is_unique[contacts.contact_number] verifica se o valor de contact_number é exclusivo em relação aos valores do campo contact_number na tabela de contatos do banco de dados.

Exibindo mensagens de erro de validação de formulário

Caso ocorra um erro durante o processamento do formulário, você pode usar o seguinte código para exibir os erros de validação:

<?php echo validation_errors(); ?>

Aqui:

  • A função acima retorna todos os erros que ocorreram.

Preenchendo dados de formulário enviados: formulários fixos

Alguns formulários possuem muitos campos e, caso ocorra um erro, é importante garantir que os dados inseridos corretamente sejam preservados. A biblioteca de validação oferece mecanismos para isso, conforme o código a seguir:

<?php echo set_value('field_name'); ?>

Aqui:

  • O código acima exibe a entrada que o usuário inseriu.

Para um guia de referência completo sobre os métodos disponíveis na biblioteca de validação, consulte a documentação da API no site oficial. CodeGuia do usuário do Igniter: https://codeigniter.com/userguide3/libraries/form_validation.html.

CodeExemplo de Validação de Formulário Igniter

Ao longo desta série de tutoriais, adicionamos código ao nosso projeto, um aplicativo de gerenciamento de contatos. Nesta seção, carregaremos a biblioteca de validação e veremos como utilizá-la na prática em um exemplo real. Modifique o código das rotas da seguinte forma para incluir o método `store`:

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['store'] = 'contacts/store';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['users'] = 'welcome/users';

Vamos agora carregar a biblioteca de validação de formulários no controlador de Contatos e definir algumas regras de validação. Modifique o código conforme mostrado abaixo:

<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Contacts extends CI_Controller {

public function __construct() {
parent::__construct();
$this->load->helper('url', 'form');
$this->load->library('form_validation');
}

public function index() {
$this->load->view('header');
$this->load->view('contacts/index');
$this->load->view('footer');
}

public function create() {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
}

public function store() {
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);

$this->form_validation->set_rules($rules);

if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
} else {
redirect(base_url('contacts'));
}
}

public function edit($id) {
$this->load->view('header');
$this->load->view('contacts/edit');
$this->load->view('footer');
}

public function update($id) {
$this->load->view('header');
$this->load->view('contacts/update');
$this->load->view('footer');
}

public function delete($id) {
$this->load->view('header');
$this->load->view('contacts/delete');
$this->load->view('footer');
}
}

Aqui:

  • $rules = array(…) define as regras de validação.
  • $this->form_validation->set_rules($rules); define as regras de validação.
  • if ($this->form_validation->run() == FALSE) {…} executa as regras de validação e, se falharem, o formulário é exibido novamente com os erros de validação. Se a validação for bem-sucedida, redirecionamos para a página de lista de contatos. Em circunstâncias normais, gravaríamos os dados no banco de dados, o que faremos no próximo tutorial sobre bases de dados.

Modifique a visualização de criação em application/views/contacts/create.php conforme mostrado abaixo:

<div class="column">
<h2 class="title">Create Contact</h2>
<div class="notification is-danger">
<?php echo validation_errors(); ?>
</div>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="contact_name" name="contact_name" class="input" type="text" value="<?php echo set_value('contact_name'); ?>" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="contact_number" name="contact_number" class="input" type="text" value="<?php echo set_value('contact_number'); ?>" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email_address" name="email_address" class="input" type="email" value="<?php echo set_value('email_address'); ?>" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>

Aqui:

  • Exibe os erros que ocorrem, se houver, durante o processo de validação.
  • Define o valor que foi inserido anteriormente, se houver.

Carregue o seguinte URL No seu navegador, clique em Criar contato sem inserir nenhum valor:

CodeErros de validação de formulário do Igniter exibidos

Perguntas Frequentes

A validação do lado do cliente pode ser ignorada desativando-a. JavaScript ou envio de uma solicitação direta. A validação no servidor é executada em um ambiente onde o usuário não tem controle, sendo, portanto, a última linha de defesa confiável.

Um formulário fixo preenche novamente os campos que o usuário já completou após uma submissão falha, usando a função `set_value()`. Isso evita que o usuário precise refazer o formulário.ping Dados válidos quando apenas um campo causou o erro.

O método `is_unique[table.field]` verifica se o valor enviado corresponde a uma coluna no banco de dados e falha se ele já existir. É usado para campos como e-mail ou nome de usuário que não devem ser duplicados.

Sim. A partir de uma lista de campos, a IA pode gerar a matriz set_rules com regras obrigatórias, de e-mail válido e de comprimento, além de mensagens personalizadas. RevVeja as regras em relação à sua lógica de negócios e ao esquema do banco de dados.

O auxiliar de formulário gera HTML compatível com os padrões, escapa atributos e mantém a consistência dos formulários. Ele também se integra a auxiliares de validação como set_value, reduzindo a repetição de marcação nas visualizações.

Resuma esta postagem com: