2 min read

Routing a Route Model Binding: čisté URL bez duplicitného kódu

Praktický routing, menovanie route a model binding cez id aj slug.

Routing je vstupná brána do aplikácie. Dobre navrhnuté route skracujú controller kód, znižujú bugy a dávajú API aj webu predikovateľný tvar.

Základné web route

PHP
use App\Http\Controllers\PostController;

Route::get('/posts', [PostController::class, 'index'])->name('posts.index');
Route::get('/posts/{post}', [PostController::class, 'show'])->name('posts.show');

Konzistentné mená route ti pomôžu pri redirectoch aj testoch.

Route Model Binding

PHP
public function show(Post $post)
{
    return view('posts.show', compact('post'));
}

Laravel automaticky načíta model podľa {post} parametra.

Custom key (slug) binding

PHP
// App\Models\Post.php
public function getRouteKeyName(): string
{
    return 'slug';
}

Takto dostaneš SEO-friendly URL bez manuálneho where dotazu v controlleri.

API route vs web route

  • routes/web.php – sessions, CSRF, Blade,
  • routes/api.php – stateless API, JSON odpovede.

Najčastejšie chyby

  • kopírovanie findOrFail do každého controller action,
  • route bez názvov,
  • zmiešané web/API endpointy v jednom súbore bez pravidiel.

Mini úloha

  1. Sprav CRUD route pre Article resource.
  2. Zapni binding cez slug.
  3. Otestuj, že neexistujúci slug vracia 404.

Overenie v praxi

  • Spusť php artisan test a skontroluj, že zmena neotvorila regresiu.
  • Over kritický endpoint alebo flow priamo v prehliadači/HTTP klientovi.
  • Ak riešiš DB vrstvu, skontroluj aj SQL správanie (N+1, indexy, transakcie) cez logy/profiler.

Čo bude ďalej

V ďalšom článku prejdeme controller architektúru, constructor DI a response typy.

Previous articlePorty, logy a základný troubleshooting kontajneraNext articleComposer na macOS: global tools a čisté PATH nastavenie
Back to article list