Mengenal Fitur Delete Record pada Laravel Filament
Fitur Delete Record dalam Laravel Filament merupakan bagian integral dari alur CRUD yang bertugas menghapus data pada database. Dengan dukungan struktur resource yang konsisten, Filament menghadirkan proses penghapusan data yang mudah digunakan oleh pengguna admin serta aman bagi developer yang mengutamakan integritas data sistem.
Selain itu, fitur Delete Record juga mendukung skenario penghapusan yang lebih aman seperti soft delete, force delete, hingga bulk delete. Dengan kemampuan ini, developer dapat menentukan standar pengelolaan data yang sesuai dengan kebutuhan aplikasi bisnis seperti e-commerce, manajemen konten, hingga sistem administrasi internal.
Apa Itu Delete Record?
Secara definisi, Delete Record adalah aksi pada halaman Edit atau List dalam Resource Filament yang bertugas menghapus data dari database. Aksi ini biasanya hadir dalam bentuk tombol atau icon delete yang dapat diakses oleh user dengan hak akses yang sesuai.
Dalam Filament, opsi Delete bisa berupa:
- Delete biasa → Data terhapus secara permanen
- Soft Delete → Data tidak benar-benar hilang (ditandai
deleted_at) - Bulk Delete → Menghapus banyak data sekaligus
- Force Delete → Menghapus data soft delete secara permanen
Lokasi Fitur Delete Record di Filament
Umumnya, fitur Delete dapat ditemukan pada:
1. Table Actions (List Records)
Pada tabel daftar records, aksi delete tersedia per baris.
2. Action pada Halaman Edit
Tombol delete tersedia di header atau footer form edit.
Dengan UI bawaan Filament, pengguna dapat mengaksesnya tanpa implementasi HTML manual.
Delete via Table Actions
Fitur Delete pada tabel dapat diaktifkan melalui method actions() pada resource table.
Contoh implementasi:
use Filament\Tables;
public static function table(Table $table): Table
{
return $table
->columns([
// definisi kolom ...
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
]);
}
Hasilnya, setiap record memiliki tombol delete pada tabel.
Delete via Halaman Edit
Pada halaman Edit, tombol delete tersedia otomatis jika DeleteAction terdaftar:
protected function getActions(): array
{
return [
Actions\DeleteAction::make(),
];
}
Setelah tombol ditekan, Filament akan menampilkan modal konfirmasi sebelum menghapus data.
Konfirmasi Penghapusan
Demi keamanan pengguna, Filament menyediakan modal konfirmasi sebelum menghapus. Modal ini dapat dikustomisasi:
Tables\Actions\DeleteAction::make()
->requiresConfirmation()
->modalHeading('Hapus Data')
->modalSubheading('Anda yakin ingin menghapus data ini?')
->modalButton('Ya, Hapus');
Konfirmasi ini mencegah penghapusan tidak sengaja oleh user.
Mendukung Soft Delete
Jika model menggunakan trait:
use Illuminate\Database\Eloquent\SoftDeletes;
Maka DeleteAction tidak langsung menghapus permanen tetapi hanya mengisi kolom deleted_at. Contoh pada model:
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
use SoftDeletes;
}
Keuntungannya:
- Data bisa dipulihkan (restore)
- Data tetap tersimpan untuk log & audit
- Lebih aman untuk aplikasi produksi
Filament bahkan menyediakan opsi:
- RestoreAction
- ForceDeleteAction
Contoh:
->actions([
Tables\Actions\RestoreAction::make(),
Tables\Actions\ForceDeleteAction::make(),
])
Bulk Delete
Delete massal sangat berguna untuk efisiensi pengelolaan data.
Contoh implementasi:
->bulkActions([
Tables\Actions\DeleteBulkAction::make(),
])
Dengan ini, admin dapat memilih beberapa baris sekaligus lalu menghapusnya.
Keamanan Delete Record
Untuk menjaga keamanan data, Filament mendukung integrasi dengan sistem:
- Authorization (Gate & Policy Laravel)
- Role and Permission (Spatie Permission)
- Form Validation
- Soft delete
Contoh proteksi Policy:
public function delete(User $user, Post $post)
{
return $user->hasRole('admin');
}
Dengan cara ini, hanya user dengan role tertentu yang dapat menghapus data.
Notifikasi Setelah Penghapusan
Setelah delete berhasil, Filament menampilkan notifikasi. Notifikasi dapat disesuaikan:
Tables\Actions\DeleteAction::make()
->successNotificationTitle('Data berhasil dihapus!');
User mendapat feedback yang jelas mengenai tindakan mereka.
Keunggulan Fitur Delete Record
Beberapa kelebihan fitur delete pada Filament:
- Modal konfirmasi otomatis
- Mendukung soft delete & force delete
- Terintegrasi dengan bulk actions
- Mendukung authorization dan roles
- Notifikasi sukses otomatis
- Tidak perlu HTML & JavaScript manual
- Cocok untuk aplikasi enterprise
Dengan fitur ini, aplikasi admin dapat dipakai secara aman dan efisien.
Kesimpulan
Fitur Delete Record pada Laravel Filament memberikan solusi yang aman dan terstruktur untuk menghapus data dalam sistem CRUD. Dengan dukungan konfirmasi, soft delete, bulk delete, hingga integrasi dengan Laravel Policy dan Roles, Filament memastikan proses penghapusan data tetap aman, terkendali, serta sesuai kebutuhan aplikasi. Kemampuan ini menjadikan Filament pilihan yang handal untuk membangun dashboard admin modern.