Pular para conteúdo

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:

$ php artisan make:controller ProdutoController --resource

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

  1. Básico: Crie a rota de recurso Route::resource('tarefas', TarefaController::class).
  2. Intermediário: Implemente a função destroy com uma mensagem de confirmação (flash message).
  3. 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.


Próxima Aula: Autenticação e Autorização