Typované hodnoty polí
Každý typ poľa sa mapuje na AttributeType z balíka attributes (pozrite forms.field_types), takže uložené hodnoty sa namiesto surových reťazcov vracajú ako skutočné PHP typy a odoslané hodnoty sa pri validácii typovo kontrolujú:
Forms::submissions($form)->first()->values;
// ['age' => 42, 'subscribed' => true, 'born' => CarbonImmutable, 'tags' => ['a', 'b']]
// One per-field row (a `Submission`) reads its own value the same way:
$row = $form->fields->firstWhere('key', 'age')->submissions()->first();
$row->typedValue(); // 42 (int); true (bool) for a `checkbox` rowPredvolené mapovania
| Typy polí | AttributeType | Vráti sa ako |
|---|---|---|
number, range | integer | int |
float, decimal | float | float |
checkbox, boolean, toggle | boolean | bool |
date, datetime | datetime | CarbonImmutable |
multiselect, checkboxes, tags | array | array |
time a ostatné typy | string | presne tak, ako je uložená |
Kontrola typov
Keď prejdú pravidlá Laravelu, každá viditeľná hodnota (okrem null) poľa s nereťazcovým typom sa overí voči tomuto typu. Nezhoda neprejde cez Forms::validate() (ani pri finalizácii) — vyhodí ValidationException pod cestou poľa ako každé iné pravidlo; desatinné číslo v poli number() je presne taký prípad. Nenamapované typy polí — vrátane time — si zachovajú voľné reťazcové správanie:
use Illuminate\Validation\ValidationException;
// 'age' => '3.5' posted to a number() field in the contact form's details group
try {
Forms::validate($form, $request);
} catch (ValidationException $e) {
$e->errors(); // ['contact.details.age' => ['The Age field must be a valid integer.']]
}
$field->attributeType(); // the AttributeType mapped from the field's typeUložená hodnota, ktorú už nemožno previesť — dáta zapísané pred zmenou typu alebo priamo cez createSubmission() — sa vráti presne tak, ako je uložená, a čítač odpovedí nezlyhá.
Vlastné typy
Platné hodnoty AttributeType sú string, integer, float, boolean, array a datetime. Publikované pole field_types nahrádza predvolené, preto si ponechajte záznamy, ktoré stále potrebujete. number a range sú celé čísla — na desatinné použite pole decimal alebo float; pole time zámerne nie je namapované (validujte ho napr. pravidlom date_format:H:i):
// config/forms.php — keep the defaults and add your own field types
'field_types' => [
'number' => 'integer',
'checkbox' => 'boolean',
// ...
'rating' => 'integer', // a custom field type, cast and checked as an int
],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.