---
title: "Slugy a routovanie — Advertisements for Laravel | Roundly"
description: "Slugy reklám pre každý jazyk s jedinečnosťou vynútenou databázou, route binding v akomkoľvek jazyku, voliteľné 301 zo starých slugov a validácia."
url: https://roundly-consulting.com/sk/open-source/navody/advertisements-for-laravel/slugy-a-routovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Advertisements for Laravel](https://roundly-consulting.com/sk/open-source/navody/advertisements-for-laravel.md)

# Slugy a routovanie

Slugy generuje sluggable-for-laravel. Reklamy majú mapu slugov podľa jazykov, vytvorenú z názvu v každom jazyku:

- Pri vytvorení dostane slug každý jazyk, ktorý má vyplnený name, a každý sa prepíše podľa pravidiel svojho jazyka (Red Chair / Červená stolička → red-chair / cervena-stolicka).
- Pri úprave sa pregenerujú len jazyky, ktorých názov sa zmenil; premenovanie so zachovaným základom nikdy nezmení chair-2 na chair-3.
- Kolízie sa riešia v rámci jazyka číselným sufixom od -2 (vintage-road-bike, vintage-road-bike-2, …); soft-deleted reklamy si slug ponechávajú rezervovaný. Rôzne jazyky môžu mať rovnaký slug. Prázdny name nevygeneruje nič.
- Unikátny index pre každý jazyk to vynucuje aj v databáze; súbežný zápis, ktorý prehrá, dostane nový sufix a zopakuje sa.

## Route binding

Reklamy sa viažu podľa slugu: najprv v aktívnom jazyku, potom vo fallback\_locale a nakoniec v ktoromkoľvek inom podporovanom jazyku — odkaz zdieľaný v inom jazyku teda stále funguje. URL sa generujú zo slugu v aktuálnom jazyku:

```php
use Illuminate\Support\Facades\Route;
use RoundlyConsulting\Advertisements\Models\Advertisement;

// routes/web.php
Route::get('/ads/{advertisement}', fn (Advertisement $advertisement) => $advertisement)->name('ads.show');
// GET /ads/vintage-road-bike resolves the ad whose slug matches, preferring the current locale.

route('ads.show', $ad);                                   // current-locale slug
Advertisement::query()->whereSlug('vintage-road-bike')->first();
Advertisement::query()->whereSlug('stary-bicykel', locale: 'sk')->first();
$ad->slugFor('sk');                                       // exact locale, no fallback
```

## História slugov

Pri zapnutom slugs.history (a publikovanej migrácii balíka sluggable) sa každý starý slug zapamätá a požiadavka GET naň odpovie presmerovaním 301 na aktuálnu URL vrátane query stringu. Natrvalo zmazaná alebo prerezaná reklama si záznamy histórie vezme so sebou; soft-deleted reklama si ich (aj rezervovaný slug) ponechá pre obnovenie.

## Kľúče umiestnení a kategórií

Umiestnenia a kategórie majú jediný reťazcový slug — kľúč pre kód, napríklad „sidebar“. Ak ho nevyplníte, vygeneruje sa z názvu vo fallback\_locale (Side Banner → side-banner, pri obsadení so sufixom -2). Zadaný slug sa zachová bajt po bajte a obsadený vyhodí SlugAlreadyTakenException namiesto tichého pridania sufixu. Po nastavení sa už nikdy nezmení.

## Validácia

Vstup z administrácie validujte pravidlami balíka sluggable, ktoré uplatňujú presne tieto pravidlá:

```php
use RoundlyConsulting\Advertisements\Models\Advertisement;
use RoundlyConsulting\Advertisements\Models\Placement;
use RoundlyConsulting\Sluggable\Rules\UniqueSlug;
use RoundlyConsulting\Sluggable\Rules\ValidSlug;

'slug' => ['nullable', 'string', ValidSlug::for(Placement::class), UniqueSlug::for(Placement::class)->ignore($placement)],
'slug' => ['nullable', 'array', UniqueSlug::for(Advertisement::class)->ignore($ad)],   // errors on slug.{locale}
```

## 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/advertisements-for-laravel.md)
