Pengenalan CRUD Laravel Filament
Belajar CRUD Laravel Filament dengan Form Builder adalah langkah penting bagi developer yang ingin membangun panel admin modern dan efisien. Filament menyediakan komponen form builder yang memudahkan pembuatan formulir input, validasi, dan relasi data secara otomatis.
Mengapa Filament?
Filament adalah framework Laravel yang fokus pada pembuatan admin panel. Dengan form builder, Anda bisa membuat form CRUD tanpa menulis HTML berulang. Produktivitas meningkat drastis.
Persiapan Lingkungan
Instalasi Laravel dan Filament
Pastikan Anda sudah menginstal Laravel 10 atau 11. Jalankan perintah:
composer create-project laravel/laravel crud-filament
cd crud-filament
composer require filament/filament:"^3.0"
Konfigurasi Database
Siapkan database MySQL atau SQLite. Ubah file .env sesuai koneksi. Lalu jalankan php artisan migrate.
Membuat Model dan Migrasi
Model Post (Contoh)
Buat model Post dengan migrasi: php artisan make:model Post -m. Definisikan field:
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->boolean('is_published')->default(false);
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->timestamps();
});
Jalankan php artisan migrate.
Membangun Resource Filament
Generate Resource
Gunakan perintah: php artisan make:filament-resource Post. File akan dibuat di app/Filament/Resources/PostResource.php.
Form Builder di Resource
Di method form(), gunakan komponen FormBuilder dari Filament:
use Filament\Forms;
use Filament\Forms\Form;
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('title')
->required()
->maxLength(255),
Forms\Components\RichEditor::make('content')
->required()
->columnSpanFull(),
Forms\Components\Toggle::make('is_published'),
Forms\Components\Select::make('user_id')
->relationship('user', 'name')
->required(),
]);
}
Dengan Form Builder, validasi dan penyimpanan otomatis terintegrasi.
Field Kustomisasi
Anda bisa menambahkan placeholder, helper text, atau conditional logic. Contoh:
TextInput::make('title')
->placeholder('Masukkan judul')
->hint('Minimal 3 karakter')
->lazy(),
Implementasi CRUD
List View (Table)
Di method table() pada Resource, definisikan kolom yang ditampilkan:
use Filament\Tables;
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('title')
->searchable(),
Tables\Columns\BooleanColumn::make('is_published'),
Tables\Columns\TextColumn::make('user.name'),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\DeleteBulkAction::make(),
]);
}
Edit dan Delete
Filament otomatis menangani edit dan delete melalui action di atas. Anda bisa menambahkan validasi tambahan di mutateFormDataBeforeSave() jika perlu.
Testing CRUD
Jalankan php artisan serve dan akses /admin. Login dengan user yang sudah dibuat. Anda akan melihat resource Post yang bisa di-create, read, update, delete.
Tips: Gunakan
->hiddenOn('create')untuk menyembunyikan field saat create, atau->visibleOn('edit')untuk field khusus edit.
Kesimpulan
Belajar CRUD Laravel Filament dengan Form Builder sangat mempercepat pengembangan panel admin. Dengan komponen yang reusable, developer bisa fokus pada logika bisnis. Eksplorasi lebih lanjut dengan relasi, widget, dan custom pages.