---
title: "Rozširovanie — Coupons for Laravel | Roundly"
description: "Použite vlastnú podtriedu Coupon cez coupons.model a využite kontrolu oprávnenosti vo vlastných tokoch objednávky."
url: https://roundly-consulting.com/sk/open-source/navody/coupons-for-laravel/rozsirovanie
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)

# Rozširovanie

## Vlastný model kupónu

Vytvorte podtriedu Coupon a nastavte na ňu coupons.model. Cez ňu idú všetky dopyty manažéra, akcií a pravidla, oba Artisan príkazy, relácia coupon pri uplatnení aj Coupons::fake():

```php
namespace App\Models;

use RoundlyConsulting\Coupons\Models\Coupon;

class ShopCoupon extends Coupon
{
    protected $table = 'coupons';

    // your own relations, scopes, accessors and model events
}
```

```php
// config/coupons.php
'model' => App\Models\ShopCoupon::class,
```

- Ak sa trieda volá inak, nastavte $table = 'coupons' — Eloquent by inak odvodil tabuľku z názvu triedy. Relácia uplatnení sa explicitne viaže na coupon\_id, takže názov triedy môže byť ľubovoľný.
- Hodnota, ktorá nie je Coupon ani jeho podtriedou, vyhodí InvalidConfigurationException z toolkitu s názvom kľúča — balíkový model ju nikdy potichu nenahradí.
- CouponRedemption je final a vymeniť sa nedá.

## Opätovné použitie kontroly oprávnenosti

Vo väčšine tokov vám postačí Coupons::check() — prvý dôvod zlyhania vráti cez fasádu a fake ho vidí. V pozadí je jediným zdrojom pravdy o oprávnenosti RedemptionGuard. firstFailure() vráti prvý neúspešný RedemptionFailureReason — alebo null — bez vyhodenia výnimky; soft-deleted kupón ohlási najprv NotFound a s cenou null sa preskočia kontroly meny a minima. throwFor() vyhodí zodpovedajúcu výnimku vrátane CouponNotFound:

```php
use RoundlyConsulting\Coupons\Support\RedemptionGuard;

$guard = app(RedemptionGuard::class);

$reason = $guard->firstFailure($coupon, $cartTotal, $user);   // ?RedemptionFailureReason — never throws

if ($reason !== null) {
    $message = __($reason->translationKey(), ['code' => $coupon->code]);   // customer-facing text

    $guard->throwFor($coupon, $reason, $cartTotal);                       // or raise the matching exception
}
```

## Ďalšie možnosti

- Udalosti — analytika, odhaľovanie podvodov, upozornenia na vypredanie a auditné záznamy nad piatimi udalosťami.
- Preklady — angličtina a slovenčina sú súčasťou balíka; publikujte coupons-translations a upravte ich alebo pridajte ďalší jazyk.
- Zákazníci s UUID alebo ULID — nastavte coupons.key\_type pred migrovaním.

## 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)
