Aula 08 - CRUD Completo 🛠️
🎯 Objetivo da Aula
Unir tudo o que aprendemos até agora (Rotas, Controllers, Views, Migrations e Eloquent) para construir um CRUD completo (Create, Read, Update, Delete). Vamos aprender a lidar com formulários, validação e mensagens de feedback.
📋 O que é um CRUD?
É o conjunto das 4 operações básicas de qualquer sistema de informação: 1. Create (Criar/Inserir) 2. Read (Ler/Listar) 3. Update (Atualizar) 4. Delete (Excluir)
🏗️ Resource Controllers
O Laravel facilita isso com um comando que já cria os métodos padrões:
Isso gera métodos como index, create, store, edit, update e destroy.
📊 Fluxo de um Registro no CRUD
stateDiagram-v2
[*] --> Lista: index()
Lista --> Form_Criar: create()
Form_Criar --> Lista: store() (POST)
Lista --> Form_Editar: edit(id)
Form_Editar --> Lista: update(id) (PUT)
Lista --> [*]: destroy(id) (DELETE) 🛡️ Validação de Dados
Nunca confie no que o usuário envia. Use o motor de validação do Laravel:
public function store(Request $request) {
$request->validate([
'nome' => 'required|min:3|max:255',
'preco' => 'required|numeric',
]);
Produto::create($request->all());
return redirect()->route('produtos.index')->with('success', 'Criado!');
}
📄 Paginação
Ter 10.000 registros em uma única página quebra o navegador. O Laravel resolve isso com um método: $produtos = Produto::paginate(10);
Na view: {% raw %}{{ $produtos->links() }} - Pronto, botões de paginação automáticos!
🧠 Blocos de Destaque
Token CSRF
Todo formulário HTML no Laravel deve conter a diretiva @csrf para evitar ataques de Cross-Site Request Forgery. Caso contrário, o Laravel retornará um erro 419.
🛠️ Exercícios Progressivos
- Básico: Crie a rota de recurso
Route::resource('tarefas', TarefaController::class). - Intermediário: Implemente a função
destroycom uma mensagem de confirmação (flash message). - Desafio: Crie uma validação personalizada que impeça nomes repetidos no banco.
🚀 Mini-Projeto da Aula
Gerenciador de Tarefas (To-Do List): Construa um sistema onde o usuário possa cadastrar tarefas, marcar como concluídas, editar a descrição e excluir. Use paginação para exibir 5 tarefas por vez e garanta que todos os campos sejam validados antes de salvar.