Konfigurácia
Každý kľúč má funkčnú predvolenú hodnotu, takže väčšina aplikácií konfiguráciu vôbec nepublikuje. Publikovaný config/sluggable.php v plnom znení:
return [
'defaults' => [
'column' => 'slug',
'source' => 'name',
'separator' => '-',
'max_length' => 255,
'max_words' => null,
'language' => env('SLUGGABLE_LANGUAGE', 'en'),
'dictionary' => ['@' => 'at'],
'lowercase' => true,
'unicode' => false,
'uniqueness' => 'global',
'locale_uniqueness' => 'per_locale',
'include_trashed' => true,
'on_create' => true,
'on_update' => env('SLUGGABLE_ON_UPDATE', 'if_empty'),
'manual' => 'normalize',
'empty_source' => 'random',
'suffix' => 'sequential',
'suffix_start' => 2,
'random_length' => 8,
'target_locales' => 'source',
'locale_fallback' => 'any',
],
'reserved' => [],
'locales' => [
'supported' => null,
'fallback' => env('SLUGGABLE_FALLBACK_LOCALE'),
],
'binding' => [
'key_fallback' => false,
],
'limits' => [
'max_source_length' => 2000,
'sequential_probes' => 50,
'probe_batch' => 10,
'random_attempts' => 10,
],
'concurrency' => [
'retries' => env('SLUGGABLE_RETRIES', 3),
],
'history' => [
'enabled' => env('SLUGGABLE_HISTORY', false),
'redirect' => env('SLUGGABLE_HISTORY_REDIRECT', true),
'redirect_status' => 301,
'avoid_reuse' => false,
'table' => env('SLUGGABLE_HISTORY_TABLE', 'slug_history'),
'model' => \RoundlyConsulting\Sluggable\Models\SlugHistory::class,
'prune_after_days' => env('SLUGGABLE_HISTORY_PRUNE_DAYS'),
],
'key_type' => env('SLUGGABLE_KEY_TYPE', 'bigint'),
];Všetky kľúče
| Kľúč | Predvolené | Env | Účel |
|---|---|---|---|
defaults.column | slug | — | Stĺpec definície bez konfigurácie. |
defaults.source | name | — | Zdrojový atribút definície bez konfigurácie. |
defaults.separator | - | — | 1–3 znaky z - . _ ~ |
defaults.max_length | 255 | — | Počet znakov vrátane prefixu, sufixu a kolízneho sufixu (8–2048). |
defaults.max_words | null | — | Limit slov (null alebo prázdna hodnota = bez limitu). |
defaults.language | en | SLUGGABLE_LANGUAGE | Jazyk transliterácie reťazcových slugov (jazykové mapy používajú jazyk každej položky). |
defaults.dictionary | ['@' => 'at'] | — | Náhrady aplikované pred odstránením znakov. |
defaults.lowercase | true | — | Prevod slugu na malé písmená. |
defaults.unicode | false | — | Zachovať ne-ASCII písmená namiesto transliterácie. |
defaults.uniqueness | global | — | none / global / scoped |
defaults.locale_uniqueness | per_locale | — | per_locale / across_locales |
defaults.include_trashed | true | — | Soft-deleted riadky si slug naďalej rezervujú. |
defaults.on_create | true | — | Generovať pri vytvorení. |
defaults.on_update | if_empty | SLUGGABLE_ON_UPDATE | never / if_empty / when_source_changes / always |
defaults.manual | normalize | — | normalize / verbatim / strict |
defaults.empty_source | random | — | random / skip / fail |
defaults.suffix | sequential | — | sequential / random (custom vyžaduje suffixUsing()). |
defaults.suffix_start | 2 | — | Prvý sekvenčný sufix (1–1000). |
defaults.random_length | 8 | — | Dĺžka náhodného slugu / náhodného sufixu (4–32). |
defaults.target_locales | source | — | source / supported / current |
defaults.locale_fallback | any | — | none / fallback / any — reťazec pre čítanie a binding. |
reserved | [] | — | Slugy, ktoré nesmie získať nikto (bez ohľadu na veľkosť písmen). |
locales.supported | null | — | Zoznam jazykov; null = app.locale + app.fallback_locale. |
locales.fallback | null | SLUGGABLE_FALLBACK_LOCALE | null alebo prázdna hodnota = app.fallback_locale. |
binding.key_fallback | false | — | Po neúspešnom hľadaní podľa slugu skúsiť primárny kľúč. |
limits.max_source_length | 2000 | — | Počet zohľadnených znakov zdroja (64–100000). |
limits.sequential_probes | 50 | — | Sekvenčné kandidáty pred náhodnými (1–1000). |
limits.probe_batch | 10 | — | Kandidáty overené jedným dopytom (1–100). |
limits.random_attempts | 10 | — | Náhodné kandidáty, kým generovanie skončí chybou (1–100). |
concurrency.retries | 3 | SLUGGABLE_RETRIES | Opakovania po kolízii na unikátnom indexe (0–20; 0 vypne). |
history.enabled | false | SLUGGABLE_HISTORY | Predvolená hodnota pre keepHistory(). |
history.redirect | true | SLUGGABLE_HISTORY_REDIRECT | Predvolená hodnota pre redirectFromHistory(). |
history.redirect_status | 301 | — | 301 / 302 / 307 / 308 |
history.avoid_reuse | false | — | Predvolená hodnota pre avoidHistoricalSlugs(). |
history.table | slug_history | SLUGGABLE_HISTORY_TABLE | Tabuľka histórie. |
history.model | SlugHistory::class | — | Vymeniteľný model histórie (musí ho rozširovať; čokoľvek iné vyhodí výnimku). |
history.prune_after_days | null | SLUGGABLE_HISTORY_PRUNE_DAYS | Vek na premazanie (1–36500); null alebo prázdna hodnota (SLUGGABLE_HISTORY_PRUNE_DAYS=) = uchovať navždy. |
key_type | bigint | SLUGGABLE_KEY_TYPE | Typ primárneho kľúča slugovaných modelov (bigint / uuid / ulid, bez ohľadu na veľkosť písmen); čokoľvek iné vyhodí InvalidConfigurationException. |
Každý kľúč sa overí pri prvom použití: preklep alebo hodnota mimo rozsahu (napríklad SLUGGABLE_HISTORY=disabled) vyhodí InvalidSlugDefinitionException s názvom kľúča namiesto tichého návratu k predvolenej hodnote. Prepínače prijímajú true/false, 1/0, on/off a yes/no; reťazcové kľúče (column, source, separator, language, history.table, locales.fallback) musia byť reťazce; reserved a locales.supported musia byť zoznamy neprázdnych reťazcov a dictionary mapa reťazec ⇒ reťazec — chybná položka vyhodí výnimku namiesto toho, aby sa potichu vynechala. Predvolenú hodnotu dostane len nenastavený kľúč — chýbajúci, null alebo prázdny (KEY= v .env). Nerozpoznaný key_type vyhodí InvalidConfigurationException z toolkitu.
Prostredie (env)
Deväť kľúčov sa riadi cez env — tu s ukážkovými hodnotami:
SLUGGABLE_LANGUAGE=en
SLUGGABLE_FALLBACK_LOCALE=en
SLUGGABLE_ON_UPDATE=when_source_changes
SLUGGABLE_RETRIES=3
SLUGGABLE_HISTORY=true
SLUGGABLE_HISTORY_REDIRECT=true
SLUGGABLE_HISTORY_TABLE=slug_history
SLUGGABLE_HISTORY_PRUNE_DAYS=365
SLUGGABLE_KEY_TYPE=bigintPrepísanie v definícii
Blok defaults dopĺňa len voľby, ktoré definícia slugu nenastaví. Čokoľvek nastavíte na SlugDefinition alebo v atribúte #[Slug], má pre daný stĺpec prednosť.
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.