---
title: "Slugy a URL — Shops for Laravel | Roundly"
description: "Slugy obchodov, produktov a kategórií pre každý jazyk — jedinečnosť vynútená databázou, route binding podľa jazyka a voliteľná história s 301."
url: https://roundly-consulting.com/sk/open-source/navody/shops-for-laravel/slugy-a-url
language: sk
---

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

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

# Slugy a URL

Slugy obchodov, produktov a kategórií zabezpečuje sluggable-for-laravel. Každý model ukladá jeden slug na jazyk do stĺpca slug a používa ho ako route key:

| Model | Jedinečný | Príklad |
| --- | --- | --- |
| `Shop` | Naprieč všetkými obchodmi, pre každý jazyk | acme, acme-2 |
| `Product` | V rámci obchodu, pre každý jazyk | Dva obchody môžu mať chair; druhá Chair v jednom obchode je chair-2 |
| `Category` | V rámci obchodu, pre každý jazyk | Rovnako ako produkty |

- Generujú sa pre každý jazyk z name: z Chair / Stolička vznikne chair / stolicka.
- Vynucuje ich databáza — migrácie pridajú jedinečný index pre každý podporovaný jazyk (pri produktoch a kategóriách v rámci shop\_id), takže duplikát nevznikne ani pri súbehu či priamom inserte. Soft-deletnuté riadky si slug ponechajú, takže obnova nikdy nekoliduje.
- Ručne zadané slugy sa normalizujú a urobia jedinečnými; jazyk pridaný neskôr sa doplní pri ďalšom uložení; prázdny názov dostane náhodný slug.
- Route binding hľadá podľa jazyka requestu, potom shops.locales.fallback, potom v ľubovoľnom jazyku — na každom databázovom engine, vrátane routov v rámci tenanta.

```php
Route::get('/shops/{shop}/products/{product}', ShowProduct::class)->scopeBindings();
// /shops/acme/products/chair — another shop's "chair" is a 404
```

Všetky čítacie metódy a scopes balíka sluggable sú dostupné na všetkých troch modeloch:

```php
$product->currentSlug();   // "stolicka" under sk
$product->slugFor('en');   // "chair"
$product->slugMap();       // ['en' => 'chair', 'sk' => 'stolicka']

Product::query()->forShop($shop)->whereSlug('chair')->first();
```

SKU predvoleného variantu sa odvodzuje zo slugu v záložnom jazyku (CHAIR-DEFAULT), takže je rovnaké bez ohľadu na jazyk requestu, ktorý produkt vytvoril.

## História slugov (voliteľná)

Zapnite slugs.history a publikujte migráciu balíka sluggable — obchod, produkt či kategória, ktorým sa zmení slug, budú na starú URL odpovedať presmerovaním 301 na novú. Premenovanie slug nemení: slug sa vygeneruje raz z prvého názvu, takže odkazy zostanú stabilné. Ak má URL nasledovať nový názov, nastavte nový slug sami ($product->setTranslation('slug', 'en', 'armchair')->save()) — so zapnutou históriou starý presmeruje:

```bash
# .env
SHOPS_SLUG_HISTORY=true

php artisan vendor:publish --tag="sluggable-migrations"
php artisan migrate
```

## Aktualizácia existujúcej databázy

Databáza, ktorá spustila migrácie shops pred integráciou sluggable, ešte nemá indexy slugov. Pre každý model (Shops\\Shop, Products\\Product, Products\\Category): nájdite duplikáty, pozrite si náhľad prepisu, aplikujte ho a potom pridajte indexy. Rovnako postupujete pri neskoršom pridaní jazyka:

```bash
php artisan sluggable:duplicates "RoundlyConsulting\Shops\Products\Product"
php artisan sluggable:regenerate "RoundlyConsulting\Shops\Products\Product" --mode=all --dry-run
php artisan sluggable:regenerate "RoundlyConsulting\Shops\Products\Product" --mode=all
php artisan sluggable:indexes "RoundlyConsulting\Shops\Products\Product"

# Adding a locale later:
php artisan sluggable:regenerate "RoundlyConsulting\Shops\Products\Product" --locale=de
php artisan sluggable:indexes "RoundlyConsulting\Shops\Products\Product"
```

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