Kontrolery seskupují související logiku manipulace s požadavky do tříd. Místo vložení veškeré logiky do closurů tras kontrolery organizují akce aplikace (například všechny operace související s uživateli) do metod — udržují trasy čisté a kód organizovaný.
Základní kontroler
<?php
class UserController extends Controller {
public function index() {
return User::all(); // list users
}
public function show(User $user) { // route model binding — auto-fetch by id
return $user;
}
public function store(Request $request) {
$validated = $request->validate(['name' => 'required', 'email' => 'required|email']);
return User::create($validated); // create
}
}
Vytvořte jeden pomocí Artisanu: php artisan make:controller UserController. Každá metoda zpracovává jednu akci a trasy na ně odkazují.
Kontrolery zdrojů (RESTful CRUD)
// generate a controller with all 7 RESTful methods stubbed
// php artisan make:controller PostController --resource
Route::resource('posts', PostController::class); // maps routes to the methods:
// index() create() store() show() edit() update() destroy()
Kontroler zdroje má standardní metody CRUD, párované s Route::resource pro konvenční RESTful směrování — minimální boilerplate pro typické CRUD zdroje.
Injekce závislostí v kontrolerech
class OrderController extends Controller {
// type-hinted dependencies are AUTO-INJECTED by Laravel's service container
public function __construct(private OrderService $orders) {}
public function store(Request $request, Mailer $mailer) { // method injection too
// $request and $mailer are resolved & injected automatically
}
}
Laravel container služeb automaticky injektuje typu označené závislosti do konstruktorů a metod kontrolerů (včetně Request) — čistý, testovatelný kód.
Udržujte kontrolery tenké
✓ Controllers should handle HTTP concerns (validate input, call services, return responses)
✗ Business logic belongs in SERVICES/models, not bloated controllers ("thin controllers")
Proč je to důležité
Kontrolery jsou základním stavebním kamenem Laravel — organizují logiku manipulace s požadavky do soudržných tříd, což je nezbytné pro jakoukoli aplikaci mimo triviální trasy.
Porozumění tomu, jak vytvářet kontrolery, mapovat trasy na jejich metody a zejména používat kontrolery zdrojů s Route::resource (pro konvenční RESTful CRUD s minimálním boilerplate) je každodenní znalostí pro vytváření Laravel aplikací.
Klíčová vlastnost Laravel je automatická injekce závislostí do kontrolerů prostřednictvím service container — závislosti typu (služby, požadavek, mailer) jsou automaticky vyřešeny a injektovány, což umožňuje čistý, testovatelný, volně vázaný kód.
Rovněž důležitá je nejlepší praxe udržování kontrolerů tenkých — zpracovávání pouze HTTP obav (ověřování, volání služeb, návratové odpovědi) a delegování obchodní logiky na služby/modely, což udržuje kód udržovatelný a testovatelný.
Kontrolery spolu se směrováním a modely tvoří páteř zpracování požadavků Laravel, což je činí základní pro vytváření dobře organizovaných, profesionálních Laravel aplikací.
