Creating Forms with Laravel Filament Framework

Laravel Filament is a modern, lightweight admin panel framework designed to work seamlessly with Laravel applications. It simplifies common backend tasks, such as managing resources and creating forms, making it an excellent choice for developers. In this guide, we’ll walk through how to create forms with the Filament framework.

Why Use Filament for Forms?
Filament provides a clean and elegant way to handle forms in Laravel applications. It offers features like validation, customization, and responsiveness out of the box. With Filament, you can focus on building your application rather than writing repetitive boilerplate code.

Getting Started
Step 1: Install Filament
Before you begin, ensure your Laravel application is set up. Then, install the Filament package using Composer:

composer require filament/filament

After installation, publish the configuration files and assets:

php artisan filament:install

Step 2: Create a Filament Resource
Filament resources are the building blocks of its admin panel. To create a resource that includes a form, use the following command:

php artisan make:filament-resource Post

This command generates a resource with CRUD operations for a model (e.g., Post). If you don’t have the model yet, you can generate it first using:

php artisan make:model Post -m

Don’t forget to run migrations if needed:

php artisan migrate

Customizing the Form

Filament generates a default form based on your model’s fields. However, you can fully customize it. Open the PostResource file located in the App\Filament\Resources\PostResource directory.

Inside the form() method, you can define the fields for your form using Filament's field components. For example:

public static function form(Form $form): Form  
{  
    return $form  
        ->schema([  
            TextInput::make('title')  
                ->label('Post Title')  
                ->required()  
                ->maxLength(255),  
  
            Textarea::make('content')  
                ->label('Content')  
                ->required(),  
  
            DatePicker::make('published_at')  
                ->label('Publish Date'),  
        ]);  
}

Understanding the Form Components

1. TextInput: Creates a text input field. Useful for single-line inputs like titles or names.
2. Textarea: Provides a larger input area for multi-line text such as descriptions or content.
3. DatePicker: Adds a date picker to your form for selecting dates.

Filament offers many more components, such as Select, Toggle, FileUpload, and Repeater. These components help you create complex forms without additional packages.

Adding Validation
You can add validation rules directly to the form fields:

TextInput::make('title')  
    ->required()  
    ->minLength(5)  
    ->maxLength(255),

Validation rules ensure data integrity before it’s saved to the database.

Handling Form Actions
By default, Filament handles form submission and updates automatically. If you need custom behavior, override the save() method in the PostResource class or use form events for more control.

Comments

Popular posts from this blog

What is filament laravel framework?

Install Filament in a Laravel project

Creating Resources in Filament (Laravel Framework)