NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Všetky výnimky sú v RoundlyConsulting\Attributes\Exceptions a dedia z AttributesException, takže jeden catch pokryje všetky:

VýnimkaKedy vznikneNesie
UnknownAttributeExceptionPrísny režim je zapnutý a zápis hodnoty či metadát mieri na atribút bez globálnej definície aj bez definície v schéme modelu.—
InvalidAttributeValueExceptionHodnota nesplní typ alebo pravidlá definície, prípadne sa nedá previesť na svoj typ.attributeName, messages(), errorBag()
DuplicateAttributeValueExceptionHodnotu jedinečnej definície už má iný vlastník — zistí sa pred zápisom, alebo ju zachytí unikátny index, keď sa dvaja zapisovatelia predbiehajú.attributeName, scope
MissingRequiredAttributeExceptionvalidateAttributes() zistí, že povinný atribút chýba.attributeName
AttributesExceptionZákladná trieda všetkých štyroch (dedí z RuntimeException).—

Chybná konfigurácia — neplatná hodnota v konfigurácii alebo v definícii — namiesto toho vyhodí RoundlyConsulting\PackageToolkit\Exceptions\InvalidConfigurationException z toolkitu, ktorá nededí z AttributesException. Jej správa uvádza chybný kľúč.

Zrozumiteľné validačné chyby

InvalidAttributeValueException nesie názov chybného atribútu aj celý bag validátora. messages() pred každé hlásenie doplní názov atribútu:

use RoundlyConsulting\Attributes\Exceptions\AttributesException;
use RoundlyConsulting\Attributes\Facades\Attributes;
use RoundlyConsulting\Attributes\Exceptions\InvalidAttributeValueException;

try {
    Attributes::for($product)->set('rating', 9);
} catch (InvalidAttributeValueException $e) {
    $e->attributeName; // 'rating'
    $e->messages();    // ['rating: The rating field must not be greater than 5.']
    $e->errorBag();    // Illuminate\Support\MessageBag|null
} catch (AttributesException $e) {
    report($e);        // unknown, duplicate or missing-required attribute
}

Ak sa hodnota na svoj typ vôbec nedá previesť, výnimka bag validátora nemá — errorBag() vráti null a messages() prázdny zoznam; dôvod vysvetlí getMessage().

Odpoveď s validačnými chybami

Výnimku znova vyhoďte ako ValidationException z Laravelu a dostanete bežnú odpoveď 422 alebo presmerovanie s chybami:

use Illuminate\Validation\ValidationException;
use RoundlyConsulting\Attributes\Exceptions\InvalidAttributeValueException;
use RoundlyConsulting\Attributes\Facades\Attributes;

try {
    Attributes::for($product)->stage()
        ->set('rating', $request->integer('rating'))
        ->save();
} catch (InvalidAttributeValueException $e) {
    throw ValidationException::withMessages([
        (string) $e->attributeName => $e->errorBag()?->all() ?? [$e->getMessage()],
    ]);
}

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

Odoslaní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.