Memahami Fitur Edit Record pada Laravel Filament
Fitur Edit Record dalam Laravel Filament adalah bagian penting dalam alur CRUD yang bertugas untuk mengubah atau memperbarui data yang sudah tersimpan di dalam database. Dengan dukungan struktur resource yang konsisten, Filament memastikan bahwa proses pembaruan data dapat dilakukan melalui form yang sama seperti saat menciptakan data awal, namun dengan nilai yang sudah terisi secara otomatis.
Selain itu, fitur Edit Record juga memberikan fleksibilitas tinggi bagi pengembang untuk melakukan kontrol penuh terhadap validasi, mutasi data, hingga aksi pasca pembaruan. Hal ini menjadikan Edit Record sangat ideal digunakan dalam aplikasi bisnis yang membutuhkan keakuratan dan konsistensi dalam proses revisi data.
Apa Itu Edit Record?
Secara definisi, Edit Record adalah halaman spesifik dalam Filament Resource yang disediakan untuk memperbarui data yang sudah ada. Halaman ini mengisi form dengan data yang ditarik dari model berdasarkan primary key sehingga admin cukup melakukan perubahan tanpa perlu input ulang secara keseluruhan.
Fitur bawaan yang tersedia dalam Edit Record meliputi:
- Form input pra-terisi (pre-filled form)
- Validasi data
- Mutasi data sebelum update
- Notifikasi update
- Redirect pasca update
- Aksi tambahan (save, save & stay)
- Opsi soft delete (jika model mendukung)
Struktur Halaman Edit Record
Sama seperti halaman Create dan List, halaman Edit dibuat otomatis saat Resource digenerate:
php artisan make:filament-resource Post
Struktur yang dihasilkan:
app/Filament/Resources/PostResource/Pages/ ├── ListPosts.php ├── CreatePost.php └── EditPost.php
File EditPost.php adalah implementasi Edit Record.
Implementasi Dasar Edit Record
Berikut contoh struktur default di dalam file EditPost.php:
namespace App\Filament\Resources\PostResource\Pages;
use App\Filament\Resources\PostResource;
use Filament\Resources\Pages\EditRecord;
class EditPost extends EditRecord
{
protected static string $resource = PostResource::class;
}
Dengan kode tersebut, Filament akan:
- Menampilkan form
- Mengisi data form sesuai model
- Mengizinkan user untuk update data
- Menyimpan perubahan ke database
Tanpa kode HTML tambahan.
Form Input pada Edit Record
Form yang digunakan di halaman Edit sama seperti form pada Create. Developer cukup mendefinisikan form sekali pada Resource:
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('title')->required(),
Forms\Components\Textarea::make('content'),
Forms\Components\Toggle::make('is_published'),
]);
}
Pada halaman Edit, semua input akan terisi otomatis sesuai model.
Memodifikasi Data Sebelum Update
Filament menyediakan hook mutateFormDataBeforeSave() atau mutateFormDataBeforeFill() untuk memanipulasi data.
Contoh generate slug baru saat edit:
protected function mutateFormDataBeforeSave(array $data): array
{
$data['slug'] = \Str::slug($data['title']);
return $data;
}
Hook seperti ini sangat berguna dalam:
- Normalisasi data
- Manipulasi field otomatis
- Update relasi
- Logging manual
Notifikasi Setelah Berhasil Update
Filament mendukung notifikasi bawaan. Untuk mengubah pesan sukses:
protected function getSavedNotificationTitle(): ?string
{
return 'Data berhasil diperbarui!';
}
Jika ingin menambahkan deskripsi notifikasi, gunakan:
protected function getSavedNotification(): ?Notification
{
return Notification::make()
->title('Update berhasil!')
->body('Data telah diperbarui dalam sistem.');
}
Redirection Setelah Update
Secara default, Filament akan redirect kembali ke halaman list. Developer dapat memodifikasi tujuan redirection:
protected function getRedirectUrl(): string
{
return $this->getResource()::getUrl('edit', ['record' => $this->record]);
}
Contoh kasus penggunaan:
- Redirect tetap di halaman edit
- Redirect ke halaman view
- Redirect ke list ulang
Fitur Tambahan Saat Edit
Pada halaman Edit Record, Filament mendukung:
✔ Delete Record
Jika model mendukung penghapusan, tombol delete akan muncul otomatis.
✔ Soft Delete
Jika use SoftDeletes, Filament dapat:
- Restore record
- Force delete
- Filtering di List Records
✔ Custom Actions
Developer dapat menambah tombol custom di Edit Record untuk kebutuhan seperti:
- Publish artikel
- Approve pengajuan
- Export data
Contoh custom action:
protected function getActions(): array
{
return [
Actions\DeleteAction::make(),
Actions\Action::make('publish')
->label('Publish')
->action(fn () => $this->record->update(['is_published' => true])),
];
}
Keunggulan Fitur Edit Record
Berikut keuntungan penerapan Edit Record dalam Filament:
- Pra-terisi otomatis dari model
- Validasi mudah & fleksibel
- Tanpa HTML & JS manual
- Mendukung relasi antar tabel
- Mendukung soft delete & restore
- Dapat ditambahkan custom action
- Cocok untuk sistem enterprise
Dengan modul ini, developer dapat membangun panel admin yang kuat dan mudah digunakan oleh end-user.
Kesimpulan
Fitur Edit Record pada Laravel Filament menghadirkan solusi lengkap untuk proses pembaruan data dalam sistem CRUD berbasis dashboard admin. Dengan dukungan form yang fleksibel, validasi yang kuat, notifikasi yang jelas, serta kemampuan untuk memodifikasi data sebelum dan sesudah penyimpanan, Filament memberikan efisiensi tinggi bagi developer sekaligus pengalaman pengguna yang baik bagi admin sistem.