Laravel Validation: A Validação de Dados é uma etapa crítica e obrigatória no ciclo de vida de uma requisição HTTP. No Laravel 12, a validação é simples, fluente e extremamente robusta. Ela garante que os dados de entrada dos usuários (formulários, APIs) atendam aos requisitos definidos, protegendo a aplicação contra dados maliciosos ou inconsistentes.
Este artigo detalha o sistema de Validação do Laravel, focando nas regras, Form Requests e personalização de mensagens.
1. 🛡️ Por Que Validar no Servidor?
A validação não deve depender apenas do front-end (HTML5 ou JavaScript). A validação no lado do servidor é a única garantia de Segurança e Integridade dos Dados.
- Segurança: Impede ataques como Injeção de SQL ou XSS (Cross-Site Scripting) ao garantir que os dados estejam no formato esperado.
- Integridade: Assegura que os dados inseridos no banco de dados sejam consistentes (ex: e-mails válidos, campos obrigatórios preenchidos, unicidade garantida).
2. 📝 Validação Rápida no Controller
A forma mais direta de validar dados de uma requisição é utilizando o método validate() disponível no objeto Illuminate\Http\Request injetado no seu Controller.
Exemplo de Validação Direta
PHP
use Illuminate\Http\Request;
public function store(Request $request)
{
// Se a validação falhar, o Laravel lança uma exceção,
// interrompe a execução e redireciona automaticamente o usuário.
$validatedData = $request->validate([
'name' => 'required|min:3',
'email' => 'required|email|unique:users', // Único na tabela 'users'
'password' => 'required|min:8|confirmed', // 'confirmed' exige o campo 'password_confirmation'
]);
// O código só é executado se a validação for bem-sucedida.
// $validatedData contém apenas os campos validados (limpo).
// ... lógica de negócio e redirecionamento ...
return redirect()->route('login');
}
3. 📄 Form Requests: Organização da Lógica
Para rotas mais complexas ou para manter seus Controllers limpos (Single Responsibility Principle), use classes dedicadas de Form Request. Elas encapsulam as regras de validação e a lógica de autorização.
A. Criando e Definindo Regras
- Gere a classe:
Bashphp artisan make:request StoreUserRequest - Edite as regras e a autorização:
PHP
// app/Http/Requests/StoreUserRequest.php
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest {
public function authorize(): bool {
// Define a lógica de permissão (ex: Se o usuário está logado)
// Altere para a lógica desejada (ex: auth()->check())
return true;
}
public function rules(): array {
return [
'name' => 'required|min:3',
'email' => 'required|email|unique:users',
'password' => 'required|min:8'
];
}
}
B. Injeção no Controller
O Laravel é inteligente: se você injetar o Form Request no método do Controller, a validação e a autorização ocorrerão automaticamente antes que o método seja chamado.
PHP
// No Controller
public function store(StoreUserRequest $request)
{
// Se chegou aqui, os dados são válidos.
// ...salva usuário no banco de dados...
return redirect()->route('login');
}
4. ✍️ Customização de Mensagens e Views
A. Mensagens de Erro Personalizadas (Inline)
Você pode passar um array de mensagens personalizadas como segundo argumento para o método validate().
PHP
$messages = [
'name.required' => 'Por favor, preencha o campo :attribute.', // :attribute é um placeholder
'email.unique' => 'Este e-mail já foi cadastrado no sistema.',
];
$request->validate([ /* regras */ ], $messages);
B. Exibindo Erros no Blade
Em caso de falha, o Laravel retorna automaticamente o usuário com os erros na variável global $errors.
HTML
@if ($errors->any())
<div class="alert alert-danger">
<strong>Opa!</strong> Houve um erro nos dados:
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@error('email')
<div class="text-danger">{{ $message }}</div>
@enderror
<input type="email" name="email" value="{{ old('email') }}">
5. 🌟 Regras de Validação Customizadas
Para lógica de validação que não existe nas regras padrão (ex: CPF, CNPJ, ou datas específicas), você pode criar suas próprias regras.
Exemplo: Regra Customizada via Validator::extend
Você pode usar o método Validator::extend para registrar uma nova regra customizada com o Laravel.
PHP
use Illuminate\Support\Facades\Validator;
// Idealmente, isto deve ser feito em um Service Provider (ex: AppServiceProvider::boot)
Validator::extend('cpf', function ($attribute, $value, $parameters, $validator) {
// Exemplo: Implementação complexa de validação de CPF (requer lógica externa)
// Supondo que você tenha a lógica em uma classe utilitária:
return \App\Utils\CpfHelper::isValid($value);
});
// Mensagem de erro para a regra 'cpf'
Validator::replacer('cpf', function ($message, $attribute, $rule, $parameters) {
return "O campo :attribute contém um número de CPF inválido.";
});
Depois de registrado, use a regra no seu Controller ou Form Request:
PHP
$request->validate(['cpf' => 'required|cpf']);
✅ Conclusão Laravel Validation
Laravel Validation: O sistema de validação do Laravel é uma das suas ferramentas mais essenciais, garantindo a segurança e a integridade dos dados. A preferência é usar Form Requests para encapsular regras e autorização, mantendo os Controllers limpos. Com uma vasta biblioteca de regras built-in e a capacidade de criar regras customizadas, o Laravel oferece controle total sobre a qualidade dos dados que entram na sua aplicação.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:















