Back to School: coupon SCHOOL25 for 40% off Yearly/Lifetime membership! Read more here

Filament Create Form and Table on the Same Page

Filament 4

A demonstration of creating a custom page with forms and tables displayed side by side.

01JBH3ZAM9PJ8ZQKDKW630HGDF

Get the Source Code:

How it works

The inspiration for this page is from a WordPress page:

The whole logic is in a custom Filament page. First, the form is initialized in the mount() method.

app/Filament/Pages/Category.php:

public function mount(): void
{
$this->form->fill();
}

Then, the form has a name field that is live but only on blur. After the state is updated, a slug is generated from its state and set to a slug field.

The select field have options set manually. When options are in closure after the form is saved, the options are reloaded.

app/Filament/Pages/Category.php:

use Filament\Schemas\Schema;
use Illuminate\Support\Str;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Schemas\Components\Utilities\Set;
 
public function form(Schema $schema): Schema
{
return $schema
->components([
Section::make()
->schema([
TextInput::make('name')
->required()
->live(onBlur: true)
->afterStateUpdated(function (string $state, Set $set): void {
$set('slug', Str::slug($state));
}),
TextInput::make('slug')
->required(),
Select::make('parent_id')
->label('Parent Category')
->options(fn() => \App\Models\Category::whereNull('parent_id')->pluck('name', 'id')),
Textarea::make('description'),
]),
])
->statePath('data');
}
The FULL tutorial is available after the purchase: in the Readme file of the official repository you would get invited to.
Get the Source Code: All 148 Premium Examples for $99