Filament Laravel
Create a resource using Filament in Laravel Application
To create resource, create DB migration file by using this command
php artisan make:model <ResourceName> -m
Edit DB migration file (database/migration/ResourceName.php)
$table->string('name');
$table->json('attachments');
$table->string('email');
$table->text('description');
$table->longText('long_description');
$table->integer('number');
$table->uuid('product_id');
$table->increments('id');
$table->decimal('amount', 10, 2);
$table->date('created_at');
$table->time('sunrise', 0);
$table->dateTime('created_at', 0);
$table->foreignId('user_id');
->nullable();
->autoIncrement();
->unique();
->index();
Edit Model file (Model/ResourceName.php)
// Replace with column name
protected $fillable = [
'subject',
'description',
'attachments',
'originalAttachments',
// ...
];
// This should have if you put multiple attachments
protected $casts = [
'attachments' => 'array',
'originalAttachments' => 'array',
];
Run the database migration
php artisan migrate --force
Create a filament resource menu
php artisan make:filament-resource <ResourceName>
Create a form for the resource by edit Resources file (app/Filament/Resource)
return $form
->schema([
Section::make()
->schema([
])->columns(2)
]);
To redirect back to table after user submit form, paste this code inside class (app\Filament\Resources\NameResource\Pages\CreateResource.php and EditResource.php)
protected function getRedirectUrl(): string
{
return $this->getResource()::getUrl('index');
}
To create table resource, Edit Resources file (app/Filament/Resources)
return $table
->groups([
Group::make('status')
->titlePrefixedWithLabel(false),
])
->columns([
Tables\Columns\TextColumn::make('created_at'),
Tables\Columns\TextColumn::make('subject')->searchable(),
Tables\Columns\BadgeColumn::make('category')->searchable(),
Tables\Columns\TextColumn::make('amount')->searchable()->prefix('RM '),
])
->filters([
//
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
])->defaultSort('created_at', 'desc');
Last updated