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

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.columnslug—Stĺpec definície bez konfigurácie.
defaults.sourcename—Zdrojový atribút definície bez konfigurácie.
defaults.separator-—1–3 znaky z - . _ ~
defaults.max_length255—Počet znakov vrátane prefixu, sufixu a kolízneho sufixu (8–2048).
defaults.max_wordsnull—Limit slov (null alebo prázdna hodnota = bez limitu).
defaults.languageenSLUGGABLE_LANGUAGEJazyk 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.lowercasetrue—Prevod slugu na malé písmená.
defaults.unicodefalse—Zachovať ne-ASCII písmená namiesto transliterácie.
defaults.uniquenessglobal—none / global / scoped
defaults.locale_uniquenessper_locale—per_locale / across_locales
defaults.include_trashedtrue—Soft-deleted riadky si slug naďalej rezervujú.
defaults.on_createtrue—Generovať pri vytvorení.
defaults.on_updateif_emptySLUGGABLE_ON_UPDATEnever / if_empty / when_source_changes / always
defaults.manualnormalize—normalize / verbatim / strict
defaults.empty_sourcerandom—random / skip / fail
defaults.suffixsequential—sequential / random (custom vyžaduje suffixUsing()).
defaults.suffix_start2—Prvý sekvenčný sufix (1–1000).
defaults.random_length8—Dĺžka náhodného slugu / náhodného sufixu (4–32).
defaults.target_localessource—source / supported / current
defaults.locale_fallbackany—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.supportednull—Zoznam jazykov; null = app.locale + app.fallback_locale.
locales.fallbacknullSLUGGABLE_FALLBACK_LOCALEnull alebo prázdna hodnota = app.fallback_locale.
binding.key_fallbackfalse—Po neúspešnom hľadaní podľa slugu skúsiť primárny kľúč.
limits.max_source_length2000—Počet zohľadnených znakov zdroja (64–100000).
limits.sequential_probes50—Sekvenčné kandidáty pred náhodnými (1–1000).
limits.probe_batch10—Kandidáty overené jedným dopytom (1–100).
limits.random_attempts10—Náhodné kandidáty, kým generovanie skončí chybou (1–100).
concurrency.retries3SLUGGABLE_RETRIESOpakovania po kolízii na unikátnom indexe (0–20; 0 vypne).
history.enabledfalseSLUGGABLE_HISTORYPredvolená hodnota pre keepHistory().
history.redirecttrueSLUGGABLE_HISTORY_REDIRECTPredvolená hodnota pre redirectFromHistory().
history.redirect_status301—301 / 302 / 307 / 308
history.avoid_reusefalse—Predvolená hodnota pre avoidHistoricalSlugs().
history.tableslug_historySLUGGABLE_HISTORY_TABLETabuľka histórie.
history.modelSlugHistory::class—Vymeniteľný model histórie (musí ho rozširovať; čokoľvek iné vyhodí výnimku).
history.prune_after_daysnullSLUGGABLE_HISTORY_PRUNE_DAYSVek na premazanie (1–36500); null alebo prázdna hodnota (SLUGGABLE_HISTORY_PRUNE_DAYS=) = uchovať navždy.
key_typebigintSLUGGABLE_KEY_TYPETyp 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=bigint

Prepí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 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.