KeyVal (array)
Requirements
Used for flat
key => valuepaired fields. Usually stored in ajsondb column. (Same as a Laravel Nova KeyVal field).Do not forget to
$castthe field to array on the model.

Example from the image preview tab
KeyVal::make('Bio')->fields([
Input::make('Profession')->help('Field help')->rules('required'),
Input::make('Spouse')->rules('required'),
Input::make('Pet')->help('Field help')->rules('required'),
Input::make('Children')->rules('required'),
])->childColspan(6)Nested example
KeyVal::make('Thing')->fields([
KeyVal::make('Name')->labelClass('mb-0')->fields([
Input::make('English', 'en')->colspan(6)->labelClass('font-medium capitalize my-0', true)->rules('required'),
Input::make('Swedish', 'sv')->colspan(6)->labelClass('font-medium capitalize my-0', true)->rules('required'),
]),
KeyVal::make('Description')->labelClass('mb-0')->fields([
Trix::make('English', 'en')->labelClass('font-medium capitalize my-0', true)->rules('required'),
Trix::make('Swedish', 'sv')->includeExternalScripts()->labelClass('font-medium capitalize', true)->rules('required'),
]),
KeyVal::make('Other Attribute')->labelClass('mb-0')->fields([
Input::make('Something')->labelClass('font-medium capitalize my-0', true)->rules('required'),
Select::make('Multi select in keyval')->multiple()->options([1 => 'One', 2 => 'Two'], false),
Checkboxes::make('Checkboxes in keyval')->options(['One' => '1', 'Two' => '2'])->default(['1']),
KeyVal::make('Level 3')->labelClass('mb-0')->fields([
Input::make('City')->colspan(6)->labelClass('font-medium capitalize my-0', true)->rules('required'),
Input::make('Country')->colspan(6)->labelClass('font-medium capitalize my-0', true)->default('Sweden')->rules('required'),
]),
]),
])There is no headless version of the KeyVal field. it is a plain blade view that iterates each child field.
Check the source in resources/views/includes/keyval-wrapper.blade.php if you want to reproduce something similar, manually.
Search for /* KeyVal */ in the theme file
Methods
->fields($fields = [ ])
Nested KeyVal fields are supported in multiple levels.
You can use almost any field type, an error will be thrown if you use an invalid field.
->wrapperClass(string $classes)
Applied to the outer wrapper surrounding KeyVal field group
Default:
'flex flex-col'
->wrapperGrid(string $classes)
Defines the css grid for the KeyVal field group
Default:
'sm:flex sm:grid sm:grid-cols-12 sm:gap-x-2 sm:gap-y-4'
->childColspan(int $cols)
Overrides nested
$field->colspan()Default 12 of 12 columns
If you set it on the
Panelyou do not have to set it on each nested field.
->childStacked()
Apply
$field->stacked()to all nested fields, can be overridden in each field.
->childInline()
Apply
$field->inline()to all nested fields, can be overridden in each field.
->wire(string $wire_model_declaration)
Override nested fields
wire:modelattribute.
Last updated
Was this helpful?