| Install | |
|---|---|
composer require a909m/filament-generate-helpers |
|
| Latest Version: | 1.1.0 |
| PHP: | ^8.2 |
Effortlessly create reusable form fields and table column helpers for Filament resources based on Laravel models. This package is not just about generating code—it introduces a methodology for managing forms and tables in your Filament projects, making them reusable and easier to maintain.
When building a Filament project, it's common to encounter repetitive definitions for forms and tables in various contexts, such as:
createOptionForm): Similar forms might be required when creating options in a Select field.If a change is required in the form or table (e.g., adding a new field or column), you have to update it in multiple places. This is time-consuming, error-prone, and violates the DRY (Don't Repeat Yourself) principle.
This package provides a systematic approach:
You can install the package via composer:
composer require a909m/filament-generate-helpers
To generate helpers for a model, use the following Artisan command:
php artisan filament-generate-helpers:run User
Under the hood, this command leverages Filament's built-in feature for automatically generating forms and tables. You can learn more about this feature in the Filament documentation.
This will create the following structure in your app/Filament/Helpers directory:
.
+-- Helpers
| +-- User
| | +-- UserHelper.php
| | +-- Traits
| | | +-- UserFormFields.php
| | | +-- UserTableColumns.php
In your Filament resources, relation managers, Table widgets, or any other context, you can reuse the generated helpers.
Example: Using Helpers in a Resource
namespace App\Filament\Resources\UserResource;
use App\Filament\Helpers\User\UserHelper;
use Filament\Resources\Resource;
class UserResource extends Resource
{
public static function form(Form $form): Form
{
return $form->schema(
UserHelper::formFields()
);
}
public static function table(Table $table): Table
{
return $table->columns(
UserHelper::tableColumns()
);
}
}
The package organizes the generated code into a helper class and two traits:
For the User model:
<?php
namespace App\Filament\Helpers\User;
use App\Filament\Helpers\User\Traits\UserFormFields;
use App\Filament\Helpers\User\Traits\UserTableColumns;
class UserHelper
{
use UserFormFields, UserTableColumns;
public static function formFields(): array
{
return [
static::nameField(),
static::emailField(),
static::passwordField(),
];
}
public static function tableColumns(): array
{
return [
static::nameColumn(),
static::emailColumn(),
static::createdAtColumn(),
];
}
}
1. Single Source of Truth Define your form fields and table columns once. Use them across:
createOptionForm)2. Ease of Maintenance
3. Consistency
Imagine you have a form in your UserResource, and you want to reuse it in:
Instead of copying the same schema to multiple places:
return $form->schema([
TextInput::make('name')->required(),
TextInput::make('email')->required(),
Password::make('password')->required(),
]);
You can simply call:
return $form->schema(UserHelper::formFields());
Now, if you need to update the form (e.g., add a date_of_birth field), you update it in one place—the UserFormFields trait.
This package is not just a tool—it’s a best practice for managing reusable forms and tables in Filament projects. By centralizing your form and table logic, you save time, reduce redundancy, and ensure consistency.
Install it today and streamline your development workflow! 🎉
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.