---
title: "Generované kódy — Coupons for Laravel | Roundly"
description: "Nastavte dĺžku a abecedu generovaných kódov — kryptograficky bezpečná náhoda, kódy bez ohľadu na veľkosť písmen a validácia pri každom použití."
url: https://roundly-consulting.com/sk/open-source/navody/coupons-for-laravel/generovane-kody
language: sk
---

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

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

# Generované kódy

Ak kód nezadáte, CreateCouponAction ho vygeneruje: code.length symbolov, každý rovnomerne vybraný z code.charset cez Random\\Randomizer z PHP, ktorého predvolený engine je CSPRNG. Ak zákazníci kódy prepisujú ručne, vynechajte zameniteľné znaky:

```php
// config/coupons.php
'code' => [
    'length' => 8,
    'charset' => 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789', // no 0/O or 1/I look-alikes
],
```

```php
use RoundlyConsulting\Coupons\Enums\DiscountType;
use RoundlyConsulting\Coupons\Facades\Coupons;

$coupon = Coupons::generate(DiscountType::Percentage, value: 1000); // no code given

$coupon->code; // e.g. "K7QM2XWD"
```

## Unikátnosť

Vygenerovaný kód sa porovná so všetkými existujúcimi kupónmi vrátane soft-deleted — hoci kód vyčisteného kupónu sa dá použiť znova, nový kód sa tak nikdy nezmieša s jeho históriou uplatnení. Ak je 10 kandidátov po sebe obsadených, priestor kódov je príliš malý: akcia namiesto nekonečného cyklu vyhodí InvalidCouponConfiguration s odporúčaním priestor rozšíriť alebo zadať kód explicitne.

## Kódy bez ohľadu na veľkosť písmen

Na veľkosti písmen v kódoch nezáleží. Každý kód sa ukladá orezaný a veľkými písmenami — cez akciu, factory aj pri priamom zápise do modelu —, takže ' summer ' sa uloží ako SUMMER. Každé vyhľadanie kód upraví rovnako: find(), exists(), check(), preview(), redeem(), expireAll(), validačné pravidlo, whereCode(), hasRedeemed() aj route binding parametra {coupon}. Porovnávanie ani unikátnosť tak nikdy nezávisia od collation vašej databázy:

```php
use RoundlyConsulting\Coupons\Enums\DiscountType;
use RoundlyConsulting\Coupons\Facades\Coupons;
use RoundlyConsulting\Coupons\Models\Coupon;

$coupon = Coupons::generate(DiscountType::Percentage, 1000, code: '  summer ');
$coupon->code;                                   // "SUMMER"

Coupons::find('Summer');                         // the same coupon
Coupons::exists(' SUMMER ');                     // true
Coupon::query()->whereCode('summer')->first();   // the same coupon
```

## Validácia

Oba kľúče sa overujú pri každom generovaní kódu a hlásenie uvádza kľúč. Hlásenie o code.charset abecedu nikdy nevypíše — je to priestor, z ktorého sa losuje každý generovaný kód.

- code.length — celé číslo od 4 do 64; akceptuje sa aj celočíselný reťazec z env ako „8“, no „eight“ či „8.5“ vyhodí výnimku.
- code.charset — reťazec s aspoň 2 symbolmi, bez duplicít (bez ohľadu na veľkosť písmen), medzier, riadiacich znakov a neplatného UTF-8. Prevedie sa na veľké písmená ako každý kód, takže „a“ a „A“ sú jeden symbol; viacbajtové symboly sú v poriadku.
- Nenastavený kľúč — chýbajúci, null alebo prázdny, napríklad COUPONS\_CODE\_LENGTH= — sa vráti k predvolenej hodnote: 6 znakov z A–Z a 0–9.

```php
use RoundlyConsulting\Coupons\Enums\DiscountType;
use RoundlyConsulting\Coupons\Exceptions\InvalidCouponConfiguration;
use RoundlyConsulting\Coupons\Facades\Coupons;

config()->set('coupons.code.charset', 'AaBb'); // "a" and "A" are one symbol

try {
    Coupons::generate(DiscountType::Percentage, value: 1000);
} catch (InvalidCouponConfiguration $e) {
    $e->getMessage();
    // "Configuration value [coupons.code.charset] must not contain duplicate symbols (case-insensitively)."
}
```

Explicitné kódy sa voči formátu nikdy nekontrolujú — zadať môžete ľubovoľný kód, napríklad LAUNCH20. Aj tak sa orežú a prevedú na veľké písmená a prázdny kód vyhodí InvalidCouponDefinition.

## V príkaze about

php artisan about --only=coupons uvádza formát len podľa veľkosti, napr. „8 chars from a 32-symbol alphabet“. Nepoužiteľná hodnota sa zobrazí ako INVALID: … a príkaz nezlyhá.

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