---
title: "Fasáda Slugs — Sluggable for Laravel | Roundly"
description: "Jeden vstupný bod pre všetko okrem hookov modelu — ploché volania pre jeden model a Slugs::model(Product::class) pre prácu s celou triedou."
url: https://roundly-consulting.com/sk/open-source/navody/sluggable-for-laravel/fasada
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)

# Fasáda Slugs

Fasáda Slugs je jediný vstupný bod pre všetko, čo nie je hook modelu: ploché volania pre text a jeden model a Slugs::model(Product::class) — názov triedy alebo jej morph alias — na doplnenie slugov v celej triede, audit, indexy a vyhľadávanie v histórii:

```php
use RoundlyConsulting\Sluggable\Enums\RegenerationMode;
use RoundlyConsulting\Sluggable\Facades\Slugs;

// Text and one model
Slugs::slugify('Žltý kôň @ home', language: 'sk');     // 'zlty-kon-at-home'
Slugs::generate($product, column: 'slug');              // the value it would get; sets nothing
Slugs::apply($product);                                 // run the save-time pass now (before saveQuietly/imports)
Slugs::recompute($product, columns: ['slug']);          // recompute from the sources; you save
Slugs::regenerate($product, columns: ['slug']);         // recompute + save
Slugs::withoutGeneration(fn () => $importer->run());    // nestable, exception-safe toggles
Slugs::unlocked(fn () => $product->update(['slug' => 'new']));
Slugs::locales();                                       // SlugLocales

// A whole model class (a class name or its morph alias)
$products = Slugs::model(Product::class);
$products->regenerate(mode: RegenerationMode::Stale, dryRun: true);   // RegenerationReport
$products->regenerate(mode: RegenerationMode::Missing, withHistory: true, columns: ['slug']);
$products->queueRegeneration(mode: RegenerationMode::All, chunk: 1000); // jobs dispatched (int)
$products->duplicates(column: 'slug', locale: 'sk');   // list<SlugDuplicate> a unique index would reject
$products->indexes(dryRun: true);                      // SlugIndexReport: the DDL, nothing executed
$products->indexes();                                  // create the missing engine-native indexes
$products->findInHistory('old-name', locale: 'sk');    // the row that retired a slug, or null
$products->options();                                  // ResolvedSlugOptions
```

## Ploché metódy

| Metóda | Účel |
| --- | --- |
| `slugify(string $text, ?string $language = null, ?string $separator = null): string` | Pipeline s nakonfigurovanými predvolenými hodnotami. |
| `generate(Model $model, ?string $column = null, ?string $locale = null): string` | Jedinečná hodnota, ktorú by model dostal; nič nenastaví. |
| `apply(Model $model, ?array $columns = null, ?array $locales = null): SlugGenerationResult` | Spustí generovanie ako pri uložení hneď (pred saveQuietly() alebo importom). |
| `recompute(Model $model, ?array $columns = null, ?array $locales = null): SlugGenerationResult` | Prepočíta hodnoty zo zdrojov na inštancii; uloženie je na vás. |
| `regenerate(Model $model, ?array $columns = null, ?array $locales = null): Model` | recompute() + save(). |
| `model(string $model): ModelSlugs` | Práca s celou triedou pre názov triedy alebo morph alias (nižšie). |
| `withoutGeneration(Closure $callback): mixed` | Vypne hooky (vnoriteľné, bezpečné pri výnimke). |
| `unlocked(Closure $callback): mixed` | Obíde zámky. |
| `isGenerationEnabled(): bool, isUnlocked(): bool` | Stav prepínačov. |
| `locales(): SlugLocales` | Naviazaný zdroj jazykov. |

## Celá trieda: Slugs::model()

| Metóda | Účel |
| --- | --- |
| `regenerate(mode, dryRun, withHistory, columns, locales, chunk, withoutEvents, force): RegenerationReport` | Doplní alebo prepočíta celú triedu — rovnaké voľby ako sluggable:regenerate. |
| `queueRegeneration(mode, withHistory, columns, locales, chunk, withoutEvents, force): int` | Odošle jeden RegenerateSlugsJob na chunk; vráti počet jobov. |
| `duplicates(?string $column = null, ?string $locale = null): array` | list<SlugDuplicate>, ktoré by unikátny index odmietol. |
| `indexes(bool $dryRun = false, ?array $columns = null): SlugIndexReport` | Vytvorí chýbajúce natívne indexy, alebo ich len naplánuje. |
| `findInHistory(string $slug, ?string $column = null, ?string $locale = null, Builder\|Relation\|null $within = null): ?Model` | Záznam, ktorý slug vyradil — cez predvolený alebo zadaný dopyt. |
| `options(): ResolvedSlugOptions` | Vyhodnotené definície. |

- regenerate() a queueRegeneration() prechádzajú riadky bez globálnych scopes; každý zmenený riadok sa uloží bežným spôsobom, takže platí história aj eventy. mode prijíma RegenerationMode — Missing (predvolené), Stale alebo All.
- findInHistory() hľadá cez predvolený dopyt modelu (s globálnymi scopes) alebo cez dopyt, ktorý odovzdáte ako within — vyradený slug nikdy neodhalí riadok, ktorý by tento dopyt nevrátil.
- Každý Artisan príkaz je to isté volanie: sluggable:regenerate, :indexes a :duplicates spúšťajú model()->regenerate() / queueRegeneration(), indexes() a duplicates().

Prepínače sú počítadlá hĺbky uvoľňované v blokoch finally — dajú sa vnárať, sú bezpečné pri výnimke a medzi požiadavkami v Octane nikdy nezostanú nastavené. Na modeli je $model->regenerateSlugs() to isté ako Slugs::recompute($model): prepočíta hodnoty na inštancii a uloženie nechá na vás; Slugs::regenerate() urobí oboje.

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