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

Špecifikácia (atribúty)

Produkty majú typovanú, validovanú špecifikáciu cez attributes-for-laravel — popisné údaje, ktoré dopĺňajú možnosti variantov (tie určujú SKU). Schému definujte v shops.attributes.definitions; každá položka má typ (string, integer, float, boolean, array, datetime) a voliteľne rules, default, required, unique a encrypted. Definície sa registrujú pri štarte:

// config/shops.php
'attributes' => ['definitions' => [
    'material' => ['type' => 'string'],
    'weight'   => ['type' => 'integer', 'rules' => ['min:0']],
]],

Zápis a čítanie hodnôt

$product->attachAttribute('material', 'wool');
$product->attachAttribute('weight', 500);
$product->attachAttributes(['material' => 'wool', 'weight' => 320]);
$product->syncAttributes(['material' => 'cotton']);   // attach/replace, prune the rest
$product->detachAttribute('weight');

$product->attr('material')->string();   // 'wool'
$product->attr('weight')->int();        // 500
$product->attributeInt('weight');       // ?int
$product->validateAttributes();         // enforce the definitions' rules
$product->history('material');          // value-change history

Filtrovanie a triedenie

Query scopes poslúžia na fazetové prehliadanie katalógu — len vlna, najľahšie ako prvé:

Product::query()->whereAttribute('material', 'wool')->get();
Product::query()->whereAttributeIn('material', ['wool', 'cotton'])->get();
Product::query()->whereAttributeBetween('weight', 100, 500)->get();
Product::query()->whereHasAttribute('material')->get();
Product::query()->orderByAttribute('weight', 'desc')->get();

Definície sa pri štarte čítajú prísne: položka, ktorá nie je pole, preklep v type, príznak required, ktorý nie je boolean, alebo rules, ktoré nie sú pole, vyhodia InvalidConfigurationException s kľúčom balíka shops (napríklad shops.attributes.definitions.colour.type) namiesto toho, aby sa preskočili.

Každý zápis sa pred uložením overí voči definícii: hodnota, ktorá nevyhovie typu alebo pravidlám, vyhodí InvalidAttributeValueException a podrobnosti nesú jej attributeName, messages() a errorBag(). Ak zapnete attributes.strict balíka attributes, nedefinované názvy atribútov sa navyše odmietnu cez UnknownAttributeException.

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.