Laravel 12 dan Filament: Membangun Admin Panel Cepat dan Elegan
Laravel 12 dan Filament: Membangun Admin Panel Cepat dan Elegan
Pengenalan Singkat
Laravel adalah framework PHP modern yang mempermudah pembuatan aplikasi web. Filament adalah plugin/widget admin panel yang berjalan di atas Laravel, memungkinkan kamu membuat dashboard admin profesional tanpa perlu menulis banyak kode HTML dan JavaScript.
Jika Laravel adalah mesin mobil, Filament adalah dashboard interaktif yang sudah terpasang rapi di dalam mobil itu.
Sejarah Laravel 12
Dimulai dari Laravel 1 (2011)
Laravel dibuat oleh Taylor Otwell pada tahun 2011 sebagai alternatif yang lebih elegan dari framework PHP yang ada saat itu (seperti CodeIgniter). Versi pertama dirancang dengan filosofi: "ekspresif, elegan, dan berkinerja tinggi".
Evolusi Versi Utama
| Versi | Tahun | Perubahan Besar |
|---|---|---|
| Laravel 1–4 | 2011–2013 | Dasar framework, routing, ORM, middleware |
| Laravel 5 | 2015 | PSR (standar PHP), service container, middleware berbeda |
| Laravel 5.1–5.8 | 2015–2019 | API routes, broadcasting, queue, notifications |
| Laravel 6 | 2019 | Semantic Versioning, Vapor, Horizon |
| Laravel 7–10 | 2020–2023 | Action classes, validation rules, attributes, async tasks |
| Laravel 11 | 2024 | Streamlined structure, per-file routes, lazy collections |
| Laravel 12 | 2024 (late) | Performance boost, native types, advanced middleware |
Filosofi Laravel yang Tetap
Di setiap versi, Laravel selalu mempertahankan:
- Eloquent ORM — cara elegan untuk berbicara dengan database
- Blade templating — pemisahan logic dan tampilan yang jelas
- Artisan CLI — perintah baris perintah untuk otomasi
- Service container — dependency injection yang mendalam
Apa Itu Filament?
Sejarah Singkat
Filament dibuat oleh Dan Harrin dan timnya mulai tahun 2020, sebagai jawaban untuk pertanyaan: "Mengapa membuat admin panel dari nol setiap kali, kalau struktur dasarnya selalu sama?"
Awalnya, Filament hanya untuk mengelola tabel database. Kini berkembang menjadi ekosistem lengkap:
- Admin Panel — dashboard dengan tabel, form, dan charts
- Tables — komponen tabel yang interaktif
- Forms — builder form visual
- Notifications — sistem notifikasi in-app
Kapan Pakai Filament?
Gunakan Filament kalau kamu butuh:
- Dashboard admin cepat — tanpa mendesain dari nol
- Kelola data dengan tabel interaktif — sort, filter, search, export
- Form kompleks — validasi, relasi antar tabel, file upload, otomatis
- UI profesional — sudah dilengkapi styling, ikon, responsif mobile
- Minimal custom code — fokus bisnis logic, bukan UI
Jangan pakai Filament kalau:
- Kamu perlu tampilan yang sangat custom (tidak standar)
- UI harus beda total dari dashboard admin biasa
- Klien sangat ketat soal branding visual
Cara Kerja Laravel 12 + Filament
1. Instalasi Dasar
# Buat project Laravel 12
composer create-project laravel/laravel myapp
# Masuk folder
cd myapp
# Install Filament
composer require filament/filament
# Publish asset Filament
php artisan filament:install
# Buat admin user
php artisan make:filament-user
2. Model, Migration, dan Database
Sebelum pakai Filament, kamu buat model dan tabel terlebih dulu:
# Buat model dengan migration
php artisan make:model Product -m
# Isi migration di database/migrations
Contoh migration untuk tabel produk:
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->decimal('price', 10, 2);
$table->integer('stock');
$table->string('sku')->unique();
$table->timestamps();
});
Lalu jalankan:
php artisan migrate
3. Buat Resource Filament
Resource adalah jembatan antara model dan admin panel:
php artisan make:filament-resource Product
Perintah ini membuat folder app/Filament/Resources/ProductResource.php berisi:
- Table — tampilan list produk (kolom apa saja, filter, action)
- Form — tampilan form edit/tambah (field apa saja, validasi, relasi)
- Pages — halaman list, create, edit
4. Isi Resource dengan Logic Bisnis
Contoh: buat kolom nama, harga, stok; tambah filter stok rendah:
// app/Filament/Resources/ProductResource.php
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Forms;
class ProductResource extends Resource
{
protected static ?string $model = Product::class;
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('name')
->required()
->maxLength(255),
Forms\Components\Textarea::make('description')
->nullable(),
Forms\Components\TextInput::make('price')
->numeric()
->required()
->step(0.01),
Forms\Components\TextInput::make('stock')
->numeric()
->required(),
Forms\Components\TextInput::make('sku')
->unique()
->required(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('name')
->searchable()
->sortable(),
Tables\Columns\TextColumn::make('price')
->money('idr'),
Tables\Columns\TextColumn::make('stock')
->sortable()
->color(fn ($state) => $state < 10 ? 'danger' : 'success'),
])
->filters([
Tables\Filters\Filter::make('Low Stock')
->query(fn ($query) => $query->where('stock', '<', 10)),
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
]);
}
}
5. Akses Admin Panel
Buka browser, pergi ke:
http://localhost:8000/admin
Login dengan akun yang sudah dibuat → dashboard siap pakai.
Fitur Utama Filament (Versi Terbaru)
1. Admin Panel (Dashboard)
- Tampil otomatis dari resource yang dibuat
- Menu navigasi terotomasi
- Breadcrumb dan sidebar yang rapi
- Dark mode (toggle otomatis)
2. Builder Form Visual
- Drag-and-drop field (belum ada, tapi bisa custom)
- Validasi real-time
- Dependensi field (field B tampil jika field A diisi)
- Custom component
Contoh field yang tersedia:
Forms\Components\TextInput::make('name'),
Forms\Components\Select::make('category_id')
->relationship('category', 'name'),
Forms\Components\FileUpload::make('image'),
Forms\Components\RichEditor::make('content'),
Forms\Components\DatePicker::make('date'),
Forms\Components\Toggle::make('is_active'),
3. Table dengan Kolom Pintar
- Sort, filter, search otomatis
- Aksi bulk (edit banyak sekaligus)
- Export ke CSV/Excel
- Custom kolom dan formatasi
4. Authorization (Izin Akses)
Filament terintegrasi dengan Laravel Policy:
// app/Policies/ProductPolicy.php
public function create(User $user): bool
{
return $user->role === 'admin';
}
public function update(User $user, Product $product): bool
{
return $user->role === 'admin' || $user->id === $product->created_by;
}
Filament otomatis menyembunyikan tombol edit/delete jika user tidak punya izin.
5. Relasi Antar Model
Kelola relasi HasMany, BelongsToMany dengan mudah:
Forms\Components\Repeater::make('items')
->relationship('items')
->schema([
Forms\Components\TextInput::make('name'),
Forms\Components\TextInput::make('quantity'),
]),
Alur Kerja Praktis: Dari Idea Sampai Live
Langkah 1: Rancang Database
Buat ERD (Entity-Relationship Diagram) di kertas atau tool:
- Tabel apa saja yang dibutuhkan?
- Kolom apa di setiap tabel?
- Relasi antar tabel bagaimana?
Langkah 2: Buat Model & Migration
php artisan make:model Order -m
php artisan make:model OrderItem -m
Langkah 3: Definisikan Relasi di Model
// app/Models/Order.php
class Order extends Model
{
public function items()
{
return $this->hasMany(OrderItem::class);
}
}
Langkah 4: Buat Resource
php artisan make:filament-resource Order
php artisan make:filament-resource OrderItem
Langkah 5: Isi Form & Table Logic
Edit OrderResource.php dan OrderItemResource.php sesuai kebutuhan bisnis.
Langkah 6: Test di Browser
php artisan serve
# Buka http://localhost:8000/admin
Langkah 7: Deploy
Pastikan:
- Database sudah ter-migrate di server
- File upload folder punya izin tulis
- Environment variable diisi benar
- Cache di-clear sebelum deploy
Keunggulan Laravel 12 + Filament
| Aspek | Keuntungan |
|---|---|
| Kecepatan develop | Admin panel bisa siap dalam hitungan jam, bukan hari |
| Konsistensi UI | Semua resource pakai tema yang sama, terlihat profesional |
| Security | CSRF protection, SQL injection prevention, policy-based authorization sudah built-in |
| Mobile-friendly | Responsive otomatis, layak di HP |
| Extensible | Bisa tambah custom component, action, atau logic tanpa limit |
| Community | Laravel + Filament punya komunitas besar, dokumentasi lengkap |
Keterbatasan & Workaround
1. Filament Cocok untuk CRUD Standar
Kalau admin panel kamu butuh:
- Real-time chart yang kompleks
- Custom logic yang tidak standar
- UI yang sangat unik
Workaround: Bikin halaman terpisah (routes/web.php) untuk dashboard custom, biarkan CRUD data pakai Filament.
2. Performa untuk Dataset Besar
Jika tabel punya 100.000+ baris:
Workaround: Gunakan pagination (default 50 per halaman), lazy load, atau cache hasil query.
3. Customization UI Terbatas
Filament pakai Tailwind CSS + Alpine JS. Kalau kamu perlu style yang tidak bisa dicapai:
Workaround: Override CSS custom, atau pakai Laravel Livewire untuk custom component yang lebih kompleks.
Kesimpulan
Laravel 12 adalah framework PHP yang matang dan elegan. Filament adalah plugin yang mengubah kerja membuat admin panel dari "berbulan-bulan coding" menjadi "hitungan jam setup".
Kombinasi keduanya cocok untuk:
- Startup yang ingin MVP admin cepat
- SaaS dengan banyak akses user
- Internal tool di perusahaan
- E-commerce dengan manajemen produk kompleks
Gunakan keduanya dengan bijak — tidak setiap proyek butuh Filament, tapi kalau butuh, Filament akan hemat waktu kamu bertahun-tahun.
Referensi
- Laravel Official: https://laravel.com
- Filament Admin: https://filamentphp.com
- Laravel Ecosystem: https://laravel.io
Catatan: Artikel ini ditulis per 10 Juli 2026. Versi terbaru Laravel dan Filament mungkin lebih baru. Cek dokumentasi resmi untuk fitur terbaru.