---
title: "Route model binding — Sluggable for Laravel | Roundly"
description: "Implicitný, vlastný stĺpec, vnorený aj soft-delete route binding podľa slugu, URL podľa jazyka a voliteľné hľadanie podľa primárneho kľúča."
url: https://roundly-consulting.com/sk/open-source/navody/sluggable-for-laravel/routovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Sluggable for Laravel](https://roundly-consulting.com/sk/open-source/navody/sluggable-for-laravel.md)

# Route model binding

```php
Route::get('/topics/{topic}', ShowTopic::class);                              // routeKey() column
Route::get('/posts/{post:seo_slug}', ShowPost::class);                        // any slug column
Route::get('/clinics/{clinic}/products/{product:slug}', ShowProduct::class)->scopeBindings();
Route::get('/archive/{topic}', ShowArchived::class)->withTrashed();
route('topics.show', $topic);                                                 // current-locale slug
```

- routeKey() urobí zo stĺpca getRouteKeyName(); pri jazykovej mape je getRouteKey() slug v aktuálnom jazyku, takže generovanie URL závisí od jazyka — generovanie URL vo fronte by malo bežať v zamýšľanom jazyku.
- Binding nasleduje reťazec definície (predvolene LocaleFallback::Any, takže URL v ktoromkoľvek vyhľadateľnom jazyku sa aj tak vyhodnotí) a uprednostní aktuálny jazyk.
- Pokryté sú vnorené bindingy (->scopeBindings(), HasMany aj BelongsToMany) a routy s ->withTrashed().
- Hodnoty, ktoré nie sú reťazcom, sú príliš dlhé alebo obsahujú riadiace znaky, sa do databázy nikdy nedostanú.

## Záložné hľadanie podľa primárneho kľúča

```php
SlugDefinition::for('slug')->from('name')->routeKey()->bindByKeyFallback();
// /products/red-chair and /products/42 both resolve
```

bindByKeyFallback() (alebo globálne binding.key\_fallback) po neúspechu podľa slugu skúsi primárny kľúč — a to len pre hodnoty v tvare kľúča: ctype\_digit pri celočíselných kľúčoch, vlastná validácia uuid/ulid modelu pri unikátnych identifikátoroch. Číselný slug ako 2024 teda nikdy nezatieni záznam s id 2024.

## Kombinácia s HasUuids / HasUlids

HasUuids a HasUlids tiež definujú resolveRouteBindingQuery, preto konflikt vyriešte cez insteadof — HasSlug si pre binding podľa kľúča ponechá ich ochranu pred chybnými identifikátormi:

```php
use HasSlug, HasUuids {
    HasSlug::resolveRouteBindingQuery insteadof HasUuids;
}
```

Metóda deklarovaná priamo v triede modelu má potichu prednosť pred traitom — pri prechode na routeKey() odstráňte vlastné getRouteKeyName() / resolveRouteBinding().

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/sluggable-for-laravel.md)
