Here's an overview of all fields that are available in the Form Builder.
Renders an Input Component.
Input::make('name')
->label('Enter your name')
->rules('required', 'max:255')
->help('I need somebody!')
->placeholder('John Doe')
->minLength(2)
->maxLength(255);
// or:
Text::make('name');
You may also define the validation rules as an array or a piped string:
Input::make('text')
->rules(['required', 'max:255'])
->rules('required|max:255');
There are some additional methods that you may call on the field:
Input::make('text')
->append('@splade.dev') // Appends a text to the field
->prepend('www.') // Prepends a text to the field
->placeholder('Text') // Placeholder value for the field
->disabled() // Disables an input field
->readonly() // Makes an input read-only
->class('w-1/2') // Add additional classes to the field
->attributes(['data-custom' => 'foo']); // Add additional attributes
Hidden Field
Hidden::make('hidden_field');
// or:
Input::make('hidden_field')->hidden();
Number::make('number')
->label('Number input')
->minValue(1)
->maxValue(100)
->unsigned(), // alias for ->minValue(0)
->step(0.01);
Email::make('email');
// or:
Input::make('email')->email();
Password::make('password');
// or:
Input::make('password')->password();
Color::make('color');
// or:
Input::make('color')->color();
Renders a Textarea Component.
Textarea::make('textarea')->autosize();
Renders an Input Component with Flatpickr.js integation.
Date::make('date');
Date::make('date')->date(['showMonths' => 2]); // Flatpickr options
Time::make('time');
Time::make('time')->time(['time_24hr' => false]); // Flatpickr options
Datetime::make('datetime');
Renders an File Component with optional Filepond integation.
File::make('photo')
->multiple() // Enables selecting multiple files
->filepond() // Enables filepond
->accept('image/jpeg')
->accept(['image/png', 'image/jpeg']);
Additional Filepond configuration:
File::make('photo')
->filepond()
->server() // Enables asynchronous uploads of files
->preview() // Show image preview
->minSize('1Mb')
->maxSize('10Mb')
->width(120)
->height(120)
->minWidth(150)
->maxWidth(500)
->minHeight(150)
->maxHeight(500)
->minResolution(150)
->maxResolution(99999)
Renders a Checkbox Component.
Checkboxes can be defined as separate fields:
Checkbox::make('options[]')->label('Checkbox 1')->value('checkbox-1');
Checkbox::make('options[]')->label('Checkbox 2')->value('checkbox-2');
Or as an options array:
Checkboxes::make('options')
->label('Choose your options')
->options([
'option-1' => 'Option 1',
'option-2' => 'Option 2',
'option-3' => 'Option 3',
])
->inline(); // inline is optional
Renders a Radio Component.
Radios can be defined as separate inputs:
Radio::make('option')->label('Radio 1')->value('radio-1'),
Radio::make('option')->label('Radio 2')->value('radio-2'),
Radio::make('option')->label('Radio 3')->value('radio-3')->help('I need somebody!'),
Or as an array:
Radios::make('theme')
->label('Choose a theme')
->options([
'dark' => 'Dark theme',
'light' => 'Light theme',
'system' => 'System theme',
])
->inline(); // inline is optional
Renders a Select Component.
$options = [
'be' => 'Belgium',
'de' => 'Germany',
'fr' => 'France',
'lu' => 'Luxembourg',
'nl' => 'The Netherlands',
];
Select::make('country')
->label('Choose a country')
->options($options);
Select::make('countries[]')
->label('Choose multiple countries')
->options($options)
->multiple() // Enables choosing multiple options
->choices(); // Enables the Choices.js integration
Select::make('countries[]')
->options($options)
->multiple()
->choices(['searchEnabled' => false]); // Pass Choices.js options
Select::make('user')
->label('Select with data from a remote URL')
->remoteUrl('/api/users');
Select::make('user')
->label('Select with data from a remote URL with a remote root')
->remoteUrl('/api/users')
->remoteRoute('data.users')
->optionLabel('name')
->optionValue('id');
Select::make('user')
->label('Select with Option Label and Value')
->options([
['user_id' => 10, 'user_name' => 'John'],
['user_id' => 20, 'user_name' => 'Jane'],
['user_id' => 30, 'user_name' => 'Mary'],
['user_id' => 40, 'user_name' => 'Peter'],
])
->optionLabel('user_name')
->optionValue('user_id');
Renders a Submit Component.
Submit::make()->label('Send')
Button::make('close_button')
->label('Close Modal')
->attributes(['@click.prevent' => 'form.restore'])
->danger() // optional
->secondary(); // optional