LaravelPHPProgramação

Controllers no Laravel

No Laravel, os controllers desempenham um papel fundamental ao organizar e gerenciar a lógica da aplicação associada às rotas. Eles ajudam a estruturar o código de forma clara e limpa, seguindo o padrão MVC (Model-View-Controller), melhorando a manutenibilidade e legibilidade do projeto.

Neste artigo, você vai aprender o que são controllers, como criá-los, utilizá-los e explorará diferentes formas de torná-los mais eficientes.

O que é um Controller?

Um controller no Laravel é uma classe que atua como intermediária entre as rotas e o restante da lógica do aplicativo. Ele permite que você agrupe a lógica de uma rota em métodos específicos, facilitando a organização e reutilização do código.

 

Tipos de Controller

Controller básico

Um controller básico é uma classe com métodos que definem o comportamento das rotas. 

Criando um controller básico via artisan

O Laravel oferece o comando artisan para gerar controllers de forma rápida e prática.

php artisan make:controller HomeControllerCode language: CSS (css)

Veja um exemplo da estrutura do controller:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class HomeController extends Controller
{
    public function index()
    {
        return view('home'); // Retorna a view 'home.blade.php'
    }
}Code language: HTML, XML (xml)

Aqui, o método index será chamado pela rota correspondente e retornará a view home.

Exemplo do controller sendo chamado no arquivo de rotas routes/web.php:

<?php
use AppHttpControllersHomeController;

Route::get('/home', [HomeController::class, 'index']);Code language: HTML, XML (xml)

Nesse exemplo, o método index da classe HomeController será chamado quando a rota /home for acessada.

Controller de Recursos (Resource Controller)

Os controllers de recursos seguem as convenções RESTful e fornecem métodos predefinidos para operações CRUD (Create, Read, Update e Delete). Eles ajudam a criar APIs e rotas de forma rápida e padronizada.

Criando um controller de recursos via artisan

php artisan make:controller PostController --resourceCode language: CSS (css)
 

Métodos gerados por um Resource Controller:

  • index – Exibe uma lista de recursos.
  • create – Mostra o formulário para criar um novo recurso.
  • store – Processa os dados enviados para criar um novo recurso.
  • show – Exibe um recurso específico.
  • edit – Mostra o formulário para editar um recurso.
  • update – Processa os dados enviados para atualizar um recurso.
  • destroy – Exclui um recurso.

 

Exemplo de um Resource Controller:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;

class PostController extends Controller
{
    public function index()
    {
        return "Lista de posts";
    }

    public function create()
    {
        return view('posts.create');
    }

    public function store(Request $request)
    {
        return "Salvar post: " . $request->input('title');
    }

    public function show($id)
    {
        return "Exibir post com ID: $id";
    }

    public function edit($id)
    {
        return view('posts.edit', ['id' => $id]);
    }

    public function update(Request $request, $id)
    {
        return "Atualizar post com ID: $id";
    }

    public function destroy($id)
    {
        return "Deletar post com ID: $id";
    }
}Code language: HTML, XML (xml)

Associando um Resource Controller a rotas:

<?php

use AppHttpControllersPostController;

Route::resource('posts', PostController::class);Code language: HTML, XML (xml)

Isso cria automaticamente todas as rotas RESTful para o recurso posts.

Controllers com Middlewares

Os middlewares podem ser aplicados nos controllers para proteger ou modificar o comportamento dos métodos.

Exemplo:

class AdminController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth'); // Protege todas as rotas
        $this->middleware('admin')->only('delete'); // Aplica apenas ao método delete
    }

    public function index()
    {
        return "Painel de administração";
    }

    public function delete($id)
    {
        return "Deletar item com ID: $id";
    }
}Code language: PHP (php)

É isso ai

Os controllers no Laravel são fundamentais para manter sua aplicação organizada e modular. Desde controllers básicos até controllers de recursos e invocáveis, cada tipo tem seu propósito e aplicação ideal. Ao utilizar recursos como middlewares e injeção de dependências, você pode tornar sua aplicação mais robusta, segura e escalável.

Para mais detalhes e informações completas à respeito de controllers no Laravel, consulte a documentação oficial no endereço abaixo:
https://laravel.com/docs/11.x/controllers#writing-controllers

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *