Controllers no Laravel: Os Controladores (Controllers) são classes PHP que atuam como intermediários entre as requisições do usuário (definidas nas Rotas) e a lógica de negócio (Models e Views). Eles são cruciais no padrão MVC (Model-View-Controller), pois recebem as requisições HTTP, executam a lógica necessária e retornam a resposta apropriada.
No Laravel 12, os Controllers continuam sendo o melhor lugar para organizar o fluxo de uma aplicação, facilitando a manutenção, testabilidade e escalabilidade.
1. 🎯 O Papel Central do Controller
Um Controller é responsável por gerenciar um conjunto de ações relacionadas a uma funcionalidade ou recurso (ex: UserController gerencia tudo sobre usuários).
Funções Principais:
- Recepção: Recebe a requisição HTTP (acesso via URL) redirecionada pelo sistema de Routing.
- Processamento: Acessa e manipula dados (via Models), realiza validação, e executa a lógica de negócio.
- Resposta: Retorna uma resposta HTTP: uma View (HTML), um objeto JSON, ou um Redirecionamento.
Criando um Controller
Utilize o comando Artisan para gerar a estrutura básica da classe:
Bash
php artisan make:controller UserController
# Cria a classe em app/Http/Controllers/UserController.php
2. 📝 Estrutura e Métodos Básicos
Todo Controller deve estender a classe base Illuminate\Routing\Controller.
Exemplo de Método index()
O método abaixo é um exemplo de como um Controller usa o Eloquent ORM para obter dados e passá-los para uma View.
PHP
<?php
// app/Http/Controllers/UserController.php
namespace App\Http\Controllers;
use App\Models\User; // Importa o Model
use Illuminate\Http\Request;
class UserController extends Controller
{
// Método que lida com a requisição GET /users
public function index()
{
// 1. Processamento: Busca todos os usuários do banco de dados (via Model)
$users = User::all();
// 2. Resposta: Retorna a view 'users.index', passando os dados.
return view('users.index', compact('users'));
}
}
Relacionando com a Rota
Você associa o Controller à rota no arquivo routes/web.php:
PHP
use App\Http\Controllers\UserController;
// Mapeia a requisição GET /users para o método index do UserController
Route::get('/users', [UserController::class, 'index']);
3. 📥 Recebendo Dados e Injeção de Dependências
O Laravel utiliza o Service Container para injetar automaticamente dependências nos métodos do seu Controller.
A. Recebendo a Requisição (Request)
O objeto Request encapsula todos os dados da requisição HTTP (dados de formulário, parâmetros de URL, headers). Você o injeta no método:
PHP
use Illuminate\Http\Request;
public function store(Request $request)
{
// Validação dos dados de entrada
$validated = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
]);
// Cria o novo registro no banco de dados
User::create($validated);
// Retorna um redirecionamento como resposta
return redirect()->route('users.index');
}
B. Injeção de Modelos (Route Model Binding)
Se sua rota tem um parâmetro que corresponde a um Model, o Laravel pode injetar a instância do Model diretamente.
- Rota:
Route::get('/users/{user}', [UserController::class, 'show']); - Controller:
PHP
use App\Models\User;
// O Laravel busca o Usuário com base no {user} da URL
public function show(User $user)
{
// Você pode usar a variável $user diretamente sem fazer User::find($id)
return view('users.show', compact('user'));
}
4. 🔗 Controller de Recursos (Resource Controllers)
Para operações CRUD (Create, Read, Update, Delete) padrão, o Laravel fornece os Resource Controllers, que mapeiam automaticamente 7 ações CRUD para 7 métodos HTTP padrão.
A. Geração
Bash
php artisan make:controller UserController --resource
B. Definição da Rota
Uma única linha no arquivo de rotas define todos os 7 endpoints:
PHP
// routes/web.php
Route::resource('users', UserController::class); // Usa a sintaxe de classe no Laravel 12
| Método HTTP | URI | Método do Controller | Propósito |
| GET | /users | index | Listar todos os recursos |
| POST | /users | store | Criar um novo recurso |
| GET | /users/create | create | Exibir formulário de criação |
| GET | /users/{user} | show | Exibir um recurso específico |
| PUT/PATCH | /users/{user} | update | Atualizar um recurso |
| GET | /users/{user}/edit | edit | Exibir formulário de edição |
| DELETE | /users/{user} | destroy | Excluir um recurso |
✅ Conclusão Controllers no Laravel
Controllers no Laravel: Os Controllers são o coração da lógica de controle do Laravel. Eles implementam o “C” do MVC, separando a lógica de negócio do front-end e dos dados. A utilização de Injeção de Dependências (como o Request e Route Model Binding) e a conveniência dos Resource Controllers são características que tornam o desenvolvimento de aplicações CRUD complexas rápido, organizado e altamente testável.
Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um início. Vamos entender quais são os conhecimentos básicos necessários para aproveitar ao máximo este poderoso framework. Para iniciar seus estudos no Laravel, você precisará dominar as seguintes tecnologias:
E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:















