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 itenscreate– Mostrar um formulário para criar um novo itemstore– Salvar um novo itemshow– Mostrar um item específicoedit– Mostrar um formulário para editar um itemupdate– Atualizar um item específicodestroy– 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:
composer require laravel/breeze --devphp artisan breeze:install
Vai aparecer umas perguntinhas, você pode seguir essa ordem:




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.








