---
title: "Prechod a obmedzenia — Sluggable for Laravel | Roundly"
description: "Prevod volieb existujúceho riešenia slugov na sluggable, kombinácia s inými traitmi a presné hranice balíka."
url: https://roundly-consulting.com/sk/open-source/navody/sluggable-for-laravel/prechod-a-obmedzenia
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)

# Prechod a obmedzenia

S predvolenými nastaveniami sa každý vygenerovaný slug pri bežnom vstupe do 255 znakov zhoduje so Str::slug(), takže prechod existujúceho modelu zachová jeho URL. Bežné voľby sa prevedú takto:

| Bežná voľba inde | Sluggable |
| --- | --- |
| Generovanie z name do slug | `Zero config, or #[Slug('slug', from: 'name')]` |
| Regenerovanie pri úprave | `->onUpdate(UpdatePolicy::WhenSourceChanges) (or keep IfEmpty + ->keepHistory())` |
| Sufix začína na -1 | `->sequentialSuffix(start: 1)` |
| Globálna jedinečnosť oproti indexu s rozsahom v DB | `->uniqueWithin('clinic_id')` |
| Ručný getRouteKeyName() | `->routeKey()` |
| „Neregenerovať pri úprave“ / „zabrániť prepísaniu“ | `->immutable() / ManualSlugPolicy` |

Pred zapnutím unikátneho indexu spustite php artisan sluggable:duplicates a potom sluggable:regenerate --mode=missing na doplnenie prázdnych slugov.

## Kombinácia s inými traitmi

- HasSlug prepisuje performInsert, performUpdate, getRouteKeyName, getRouteKey, resolveRouteBindingQuery, resolveRouteBinding, resolveSoftDeletableRouteBinding a resolveChildRouteBinding — trait, ktorý prepisuje tie isté metódy, vyžaduje insteadof.
- Metóda deklarovaná priamo v triede modelu má potichu prednosť pred traitom.
- Pomocné metódy majú prefix sluggable… a HasSlug nedeklaruje currentLocale, fallbackLocale, readMap, writeMap, getTranslation(s) ani setTranslation(s), takže sa kombinuje s bežnými prekladovými traitmi bez insteadof.
- Hooky bežia v creating/updating (nie v saving), po listeneroch traitov deklarovaných skôr — trait, ktorý nastavuje stĺpec rozsahu (napr. id tenanta), deklarujte pred HasSlug.

## Obmedzenia

- insert()/upsert() cez query builder, saveQuietly() a withoutEvents() nespúšťajú eventy modelu, a preto nič negenerujú — najprv zavolajte Slugs::apply($model).
- save() bez zmien slug nedoplní (Laravel spúšťa updating len pri zmenených modeloch) — použite regenerateSlugs(), Slugs::model(X::class)->regenerate() alebo sluggable:regenerate --mode=missing.
- Model načítaný bez slugového stĺpca (select('id'), select(\['id', 'name'\])) si ponechá uložený slug: save(), touch(), restore(), regenerateSlugs() ani Slugs::apply() tento stĺpec nezmenia — ani pri regenerateOnUpdate() — a nečítajú ho, takže preventAccessingMissingAttributes() neprotestuje. Ak chcete slug vygenerovať, stĺpec načítajte (alebo zavolajte refresh()).
- Opakovanie po súbehu znovu spustí creating/updating aj pre vaše listenery; pri modeloch s neidempotentnými listenermi použite retries(0).
- createOrFirst() s kľúčom na slugu existujúci riadok podľa slugu nenájde (ani firstOrCreate() pri súbehu; bez súbehu firstOrCreate() najprv vyhľadáva, takže riadok nájde): pri Normalize/Verbatim sa vloží nový riadok so sufixom (php-2), pri Strict sa vyhodí SlugAlreadyTakenException, ktorú createOrFirst() nezachytí. Takéto volania postavte na inom unikátnom stĺpci alebo výnimku zachyťte.
- Jedinečnosť naprieč jazykmi a s closure rozsahom zabezpečuje len aplikácia.
- Jeden key\_type histórie na aplikáciu.
- Presmerovania pri prepnutí jazyka a pomocníci pre sitemapy nie sú súčasťou balíka — na vlastné riešenie počúvajte SlugChanged.

## 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)
