Dominando Controladores

Dominando Controladores

Estruturando a Lógica da Sua Aplicação

Controladores são uma parte essencial do desenvolvimento com Laravel.
Eles permitem que você organize a lógica da aplicação, separando o código que lida com as requisições HTTP das rotas. Isso facilita a manutenção e a escalabilidade do código.

Criando Controladores

No Laravel, você pode criar controladores usando o Artisan CLI. Para criar um controlador básico, execute o seguinte comando no terminal:

php artisan make:controller NomeDoController

Isso criará um arquivo de controlador em app/Http/Controllers/NomeDoController.php.

Estrutura Básica de um Controlador

Um controlador básico pode parecer com o seguinte:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class NomeDoController extends Controller
{
    public function index()
    {
        return view('index');
    }

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

Definindo Rotas para Controladores

Para mapear as rotas para os métodos de um controlador, você usa a sintaxe de array:

Route::get('/home', [NomeDoController::class, 'index']);
Route::get('/user/{id}', [NomeDoController::class, 'show']);

Neste exemplo, a rota /home chama o método index do NomeDoController, e a rota /user/{id} chama o método show.

Lembre-se de criar o arquivo blade para cada um.
index.blade.php e show.blade.php

Controladores de Recursos

Controladores de recursos são uma forma eficiente de lidar com operações CRUD (Create, Read, Update, Delete). Eles seguem as convenções RESTful e podem ser criados usando o Artisan CLI:

php artisan make:controller NomeDoController --resource

Um controlador de recurso inclui métodos para as ações típicas de CRUD:

  • index – Mostrar uma lista de itens

  • create – Mostrar um formulário para criar um novo item

  • store – Salvar um novo item

  • show – Mostrar um item específico

  • edit – Mostrar um formulário para editar um item

  • update – Atualizar um item específico

  • destroy – Excluir um item específico

Para registrar um controlador de recurso, use o método resource no seu arquivo de rotas:

Route::resource('users', NomeDoController::class);

Isso mapeia automaticamente as rotas adequadas para os métodos do controlador.

Passando Dados para as Views

Ao retornar uma view de um controlador, você pode passar dados para a view usando o método with ou um array associativo:

public function show($id)
{
    $cliente = 'áreadev';
    return view('show', ['cliente' => $cliente]);
}

Na view show.blade.php chame a variável:

{{ $cliente }}

Veja no navegador: http://localhost/users/1

Middleware nos Controladores

No Laravel, middleware é uma camada intermediária entre uma requisição HTTP e a aplicação, que permite filtrar e processar essa requisição antes que ela chegue ao controlador.

Para continuarmos esse assunto vamos precisar instalar o "laravel/breeze".

Observe que não existe a opção de autenticação (Log in / Register) na nossa aplicação.

Clique no link e siga os passos: https://laravel.com/docs/11.x/starter-kits#laravel-breeze

siga a ordem dos comandos:

  1.   composer require laravel/breeze --dev
    
  2.   php artisan breeze:install
    

Vai aparecer umas perguntinhas, você pode seguir essa ordem:

Pergunta 1: Escolha a stack Breeze que você gostaria de instalar?

Pergunta 02: Gostaria de suporte a dark mode?

Pergunta 03: Qual estrutura de teste você prefere?

Instalando e construindo as dependencias

  1.   sail artisan migrate
      sail npm install
      sail npm run dev
    

Agora temos a opção de Log in e Register.

Middleware pode ser aplicado a controladores inteiros ou a métodos específicos dentro de um controlador.

Para aplicar middleware a um controlador, use o método middleware no construtor:

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Routing\Controllers\HasMiddleware;
use Illuminate\Routing\Controllers\Middleware;

class NomeDoController extends Controller implements HasMiddleware
{
    public static function middleware(): array
    {
        return ['auth'];
    }

    // Outros métodos do controlador
}

Agora só podemos visualizar a rota: localhost/users/1 se estiver autenticado.

Middleware na rota

Para adicionar um middleware na rota basta adicionar o middleware no final.

Route::resource('users', NomeDoController::class)->middleware('auth');

Assiste o vídeo Parte II

Conclusão

Controladores no Laravel proporcionam uma maneira organizada de lidar com a lógica de sua aplicação, promovendo uma separação clara entre rotas e ações.
Com o uso de controladores básicos, controladores de recursos, injeção de dependências e middleware, você pode construir aplicações robustas e manuteníveis. Nos próximos tópicos, exploraremos como criar e renderizar views, usar o Blade templating engine e trabalhar com dados de maneira eficiente usando o Eloquent ORM.

Did you find this article valuable?

Support Áreadev by becoming a sponsor. Any amount is appreciated!