Mengenal Create Resource pada Laravel Filament
Fitur Create Resource pada Laravel Filament menjadi salah satu komponen yang sangat membantu dalam proses pengembangan aplikasi berbasis dashboard admin. Melalui konsep ini, developer dapat membangun modul CRUD secara cepat dan terstruktur tanpa perlu menulis kode dari nol. Dalam konteks produktivitas, Create Resource memberikan kemudahan pada proses integrasi form, table, serta aksi manajemen data.
Pemahaman terhadap Create Resource juga berperan penting dalam membangun sistem admin panel yang scalable dan maintainable. Dengan memanfaatkan sistem komponen yang dimiliki Filament, proses penambahan fitur seperti validasi, relasi antar model, dan manipulasi data menjadi lebih konsisten, aman, dan terkendali.
Apa Itu Create Resource?
Secara sederhana, Create Resource merupakan bagian dari struktur Resource pada Filament yang bertugas menangani proses pembuatan data baru. Resource di Filament terdiri dari beberapa halaman, yaitu:
- List Records – menampilkan daftar data
- Create Record – menambahkan data baru
- Edit Record – mengubah data
- View Record (opsional pada beberapa versi)
- Delete Record (soft delete maupun permanent)
Pada bagian Create Resource, fokus utamanya adalah menampilkan form input dan menyimpannya ke dalam database sesuai model yang dipetakan.
Struktur Resource pada Filament
Filament menggunakan pendekatan modular di mana setiap data yang akan dikelola dibuat dalam bentuk Resource. Resource ini biasanya melakukan mapping ke sebuah Model Laravel.
Contoh struktur Resource:
app/
└── Filament/
└── Resources/
└── PostResource.php
└── PostResource/
├── Pages/
│ ├── ListPosts.php
│ ├── CreatePost.php
│ └── EditPost.php
└── PostResource.php
Membuat Resource Baru
Untuk membuat Resource baru, Filament menyediakan perintah artisan berikut:
php artisan make:filament-resource Post
Perintah tersebut akan menghasilkan satu Resource beserta halaman Create, List, dan Edit.
Contoh Implementasi Form pada Create Resource
Hal yang paling penting pada Create Resource adalah formulir yang digunakan untuk menerima input dari user. Form tersebut didefinisikan pada method form() di dalam Resource.
Contoh Form Sederhana
use Filament\Forms;
use Filament\Resources\Form;
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('title')
->required()
->maxLength(255),
Forms\Components\Textarea::make('content'),
]);
}
Form di atas otomatis ter-generate dalam halaman CreatePost, tanpa perlu menulis HTML manual.
Halaman Create Record
Filament menyediakan class halaman yang menangani proses pembuatan data, biasanya ada pada:
PostResource/Pages/CreatePost.php
Contoh kode default pada halaman tersebut:
namespace App\Filament\Resources\PostResource\Pages;
use App\Filament\Resources\PostResource;
use Filament\Resources\Pages\CreateRecord;
class CreatePost extends CreateRecord
{
protected static string $resource = PostResource::class;
}
Halaman ini secara otomatis menjalankan penyimpanan data ke database berdasarkan form yang sudah didefinisikan.
Proses Validasi dan Penyimpanan
Validasi pada Create Resource dapat dilakukan langsung melalui komponen form. Jika dibutuhkan validasi tambahan, Filament juga menyediakan override method mutateFormDataBeforeCreate().
Contoh:
protected function mutateFormDataBeforeCreate(array $data): array
{
$data['slug'] = \Str::slug($data['title']);
return $data;
}
Keuntungan Menggunakan Create Resource
Berikut adalah beberapa keuntungan penerapan Create Resource dalam Filament:
- Cepat dalam pengembangan CRUD
- Tersedia komponen form yang kaya
- Validasi bawaan komponen
- Mendukung file upload & relasi model
- Template tersusun secara rapi & mudah dimaintain
Kesimpulan
Fitur Create Resource pada Laravel Filament memberikan solusi efektif dalam membangun sistem CRUD yang lengkap dan efisien. Dengan dukungan form yang fleksibel, validasi yang mudah diterapkan, serta struktur kode yang bersih, developer dapat mengembangkan dashboard admin dengan kecepatan dan kualitas yang baik. Tidak hanya itu, modul ini juga mendukung skalabilitas dalam jangka panjang untuk kebutuhan aplikasi besar.