NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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:

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): stringPipeline s nakonfigurovanými predvolenými hodnotami.
generate(Model $model, ?string $column = null, ?string $locale = null): stringJedinečná hodnota, ktorú by model dostal; nič nenastaví.
apply(Model $model, ?array $columns = null, ?array $locales = null): SlugGenerationResultSpustí generovanie ako pri uložení hneď (pred saveQuietly() alebo importom).
recompute(Model $model, ?array $columns = null, ?array $locales = null): SlugGenerationResultPrepočíta hodnoty zo zdrojov na inštancii; uloženie je na vás.
regenerate(Model $model, ?array $columns = null, ?array $locales = null): Modelrecompute() + save().
model(string $model): ModelSlugsPráca s celou triedou pre názov triedy alebo morph alias (nižšie).
withoutGeneration(Closure $callback): mixedVypne hooky (vnoriteľné, bezpečné pri výnimke).
unlocked(Closure $callback): mixedObíde zámky.
isGenerationEnabled(): bool, isUnlocked(): boolStav prepínačov.
locales(): SlugLocalesNaviazaný zdroj jazykov.

Celá trieda: Slugs::model()

MetódaÚčel
regenerate(mode, dryRun, withHistory, columns, locales, chunk, withoutEvents, force): RegenerationReportDoplní alebo prepočíta celú triedu — rovnaké voľby ako sluggable:regenerate.
queueRegeneration(mode, withHistory, columns, locales, chunk, withoutEvents, force): intOdošle jeden RegenerateSlugsJob na chunk; vráti počet jobov.
duplicates(?string $column = null, ?string $locale = null): arraylist<SlugDuplicate>, ktoré by unikátny index odmietol.
indexes(bool $dryRun = false, ?array $columns = null): SlugIndexReportVytvorí 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): ?ModelZáznam, ktorý slug vyradil — cez predvolený alebo zadaný dopyt.
options(): ResolvedSlugOptionsVyhodnotené 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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.