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 aj relácia coupon pri uplatnení:
namespace App\Models;
use RoundlyConsulting\Coupons\Models\Coupon;
class ShopCoupon extends Coupon
{
protected $table = 'coupons';
// your own relations, scopes, accessors and model events
}// 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:
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 — publikujte coupons-translations a upravte alebo preložte hlásenia a názvy.
- 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 kryptomienOdoslaní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.