Open source
Sluggable for Laravel
composer require roundly-consulting/sluggable-for-laravelPrehľad
Jedno- aj viacjazyčné slugy pre Eloquent. Ukladajte obyčajný reťazcový slug alebo json/jsonb jazykovú mapu s jedným slugom na jazyk, deklarujte ľubovoľný počet slugových stĺpcov na model a udržte ich jedinečné globálne alebo v rámci rozsahu — vynútené natívnymi unikátnymi indexmi databázy. K tomu route model binding podľa jazyka, validačné pravidlá, Artisan nástroje a voliteľná história slugov, ktorá staré URL presmeruje cez 301. Len natívny Laravel pod licenciou MIT, bez runtime závislostí tretích strán — a s predvolenými nastaveniami sa každý slug pri bežnom vstupe do 255 znakov zhoduje so Str::slug().
Čo získate
Jazykové mapy slugov
Obyčajné reťazcové slugy alebo json/jsonb jazykové mapy — jeden slug na jazyk, každý transliterovaný podľa pravidiel daného jazyka.
Zhoda so Str::slug()
S predvolenými nastaveniami sa každý slug pri bežnom vstupe do 255 znakov zhoduje so Str::slug(), takže po prechode na balík zostanú vaše URL nezmenené.
Jedinečnosť odolná voči súbehu
Jedinečné globálne, pre tenanta či nadradený záznam — s natívnymi unikátnymi indexmi databázy a automatickým opakovaním pri súbehu zápisov.
Routing podľa jazyka
Implicitný, vnorený aj soft-delete route binding hľadá podľa slugu v aktuálnom jazyku, voliteľne so záložným hľadaním podľa primárneho kľúča.
SEO história slugov
Vyradené slugy presmerujú cez 301 na aktuálnu URL bez odhalenia konceptov, zmazaných záznamov či údajov iných tenantov.
Pravidlá a zámky
Určte, ako sa správajú úpravy, ručne zadané slugy a prázdne zdroje, a zmrazte slug po publikovaní stránky.
Fasáda, DI alebo Artisan
Slugs::model(Product::class) doplní slugy, nájde duplicity a vytvorí indexy — alebo injektujte SlugManager, spustite akciu či Artisan.
Dokumentácia
Inštalácia
Inštalácia cez Composer; konfiguráciu, preklady a migráciu histórie slugov publikujete, len keď ich potrebujete.
Konfigurácia
Každý konfiguračný kľúč s predvolenou hodnotou a env premennou — formátovanie, jedinečnosť, úpravy, jazyky, limity, opakovania a história.
Rýchly štart
Pridajte trait HasSlug a kontrakt Sluggable — bez konfigurácie sa pri vytvorení vygeneruje jedinečný slug z atribútu name.
Definície slugov
Deklarujte ľubovoľný počet slugových stĺpcov cez slugOptions() alebo atribúty #[Slug] — zdroje, formát, jedinečnosť, životný cyklus a routing.
Fasáda Slugs
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.
DI a akcie
Injektujte SlugManager a získate API fasády bez statických volaní, alebo spustite akciu za metódou priamo s jej DTO.
Formátovanie a sufixy
Ako pipeline transliteruje, čistí a skracuje — plus oddeľovače, predpony a prípony, rezervované slová, vlastný slugger a kolízne sufixy.
Viacjazyčné slugy
Viacjazyčné slugy v jednom json/jsonb stĺpci — transliterácia podľa jazyka, cieľové jazyky, záložné reťazce a vlastný zdroj jazykov.
Úpravy, ručné hodnoty a zámky
Určte, kedy sa slugy regenerujú, ako sa zaobchádza s ručne zadanými hodnotami, čo sa stane pri prázdnom zdroji a ako slug zmraziť.
Jedinečnosť a súbeh
Globálna jedinečnosť, jedinečnosť v rozsahu či cez closure, soft-deleted záznamy, ohraničené overovanie a automatické opakovanie pri súbehu.
Schéma a unikátne indexy
Blueprint makrá pre slugové stĺpce a natívne unikátne indexy pre reťazcové aj viacjazyčné slugy v PostgreSQL, MySQL a SQLite.
Dopytovanie
Hľadajte modely podľa slugu — v presnom jazyku alebo cez záložný reťazec, v ľubovoľnom jazyku, podľa zoznamu — so scopes bezpečnými pre count().
Route model binding
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.
História slugov a presmerovania
Uchovajte vyradené slugy a presmerujte staré URL cez 301 na aktuálne — bez odhalenia konceptov, zmazaných záznamov či údajov iných tenantov.
Validácia
Pravidlá UniqueSlug a ValidSlug s rovnakou logikou ako generovanie — s rozsahom, podľa jazyka a bezpečné voči zisťovaniu naprieč tenantmi.
Eventy a výnimky
Eventy SlugChanged, SlugCollisionRetried a SlugsRegenerated a typovaná hierarchia výnimiek za každou chybou.
Artisan príkazy
Doplnenie a regenerovanie slugov, vytvorenie natívnych indexov a audit duplicít pred pridaním unikátneho indexu.
Prechod a obmedzenia
Prevod volieb existujúceho riešenia slugov na sluggable, kombinácia s inými traitmi a presné hranice balíka.
Testovanie
Testujte generovanie slugov, eventy, presmerovania z histórie aj regenerovanie vo fronte vo vlastnej Pest sade cez verejné API.
Požiadavky
PHP 8.4+ s ext-json a ext-mbstring, Laravel 12 alebo 13 a PostgreSQL, MySQL/MariaDB alebo SQLite pre DDL unikátnych indexov.
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 kryptomienOdoslaní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.