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 HomeController

 

Veja um exemplo da estrutura do controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index()
    {
        return view('home'); // Retorna a view 'home.blade.php'
    }
}

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 App\Http\Controllers\HomeController;

Route::get('/home', [HomeController::class, 'index']);

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 --resource
 

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 App\Http\Controllers;

use Illuminate\Http\Request;

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";
    }
}

 

Associando um Resource Controller a rotas:

<?php

use App\Http\Controllers\PostController;

Route::resource('posts', PostController::class);

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";
    }
}

 


É 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

 

 

Você Também Pode Gostar

...
Introdução à variáveis em PHP
Uma introdução sobre o uso de variáveis em PHP Leia mais
...
Como instalar e utilizar o NVM no Linux?
Como instalar e utilizar o NVM? Leia mais
...
Laravel - O básico sobre rotas
O básico para começar a trabalhar com rotas nos seus projetos. Leia mais