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 --dev
php 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.