🚀 Capítulo 18: Protegendo a Batcaverna (Tema: Batman)
NOTE
Este capítulo utiliza a temática de Batman para explicar a Validação de Dados no Laravel. Proteja o seu sistema contra dados inválidos ou maliciosos!
1. 🎯 Objetivo da Aula
Compreender a importância de validar os dados que chegam das requisições e aprender a usar o sistema de validação do Laravel para garantir que os dados sejam seguros e estejam no formato correto.
2. 🏢 O Cenário Prático (Seu Desafio)
Para entrar na Batcaverna, não basta apenas saber onde fica a passagem secreta. O computador central do Batman faz uma série de verificações de segurança: a retina precisa ser do Bruce Wayne, a voz precisa ser reconhecida e o peso do carro precisa bater com o do Batmóvel. Se alguém tentar entrar digitando uma senha errada ou sem identificação, o sistema bloqueia o acesso na hora!
Na sua API ou site:
- Você não pode confiar no que o usuário digita. Se ele deixar o campo “e-mail” em branco, ou digitar um texto onde deveria ser a idade, o seu banco de dados pode dar erro!
- O desafio é usar o sistema de Validação do Laravel para criar as regras de segurança do seu sistema!
🧠 Fundamentos: A Teoria Traduzida
🛡️ 1. O Método validate():
No Laravel, o objeto $request (que traz os dados que o usuário digitou) possui um método chamado validate(). Você passa um array dizendo o nome do campo e as regras dele separadas por uma barra vertical |.
class FormController {
public function salvar(Request $request) {
$request->validate([
'nome' => 'required|string|max:255',
'email' => 'required|email|unique:usuarios',
'idade' => 'required|integer|min:18',
]);
// Se passar daqui, os dados são válidos!
}
}📋 2. Entendendo as Regras:
required: O campo é obrigatório (não pode ficar vazio).string: Precisa ser um texto.email: Precisa ser um formato de e-mail válido (contendo@).unique:usuarios: O Laravel busca no banco e não deixa cadastrar se aquele e-mail já existir na tabelausuarios!integer: Precisa ser um número inteiro.min:18: O número precisa ser no mínimo .
4. 📖 Exemplo Guiado: Cadastrando um Vilão
Veja como ficaria a validação no Controller para cadastrar um novo vilão preso em Gotham:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class VilaoController extends Controller {
public function prender(Request $request) {
// Aplicando as regras do Batman!
$request->validate([
'nome' => 'required|min:3',
'periculosidade' => 'required|integer|max:10'
]);
// Se os dados forem inválidos, o Laravel joga o usuário
// de volta para a página anterior com as mensagens de erro!
return "Vilão cadastrado com sucesso no Arkham!";
}
}
?>5. 🛠️ Prática Obrigatória 1: Criando as Regras
- Escreva a linha de código de validação para um campo chamado
telefoneque seja obrigatório e precise ser do tipo numérico (numeric).
6. 🛠️ Prática Obrigatória 2: O Guardião
- O que acontece no Laravel se o usuário enviar o formulário deixando um campo que tinha a regra
requiredem branco?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 18 PHP_Batman) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_php_e_laravel/
├── capitulos/
│ └── capitulo_18_batman.md💡 Checkpoint de Lógica
Se a validação falhar em uma requisição do tipo API (que espera JSON), o Laravel não redireciona o usuário. Ele devolve automaticamente uma resposta com código de erro e a lista de erros em formato JSON!
10. 🔥 Desafio de Fixação
Pesquise como personalizar as mensagens de erro da validação (ex: em vez de aparecer em inglês, aparecer “O campo nome é obrigatório”).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
$regras = [
'telefone' => 'required|numeric'
];Gabarito da Prática 2:
- O Laravel vai parar a execução do código do Controller e redirecionar o usuário de volta para a tela do formulário, enviando junto as mensagens de erro para serem exibidas na tela.