Pluginify

Masuk Daftar
Home > Blog > Laravel > Mengenal Fitur Delete Record pada Laravel Filament

Mengenal Fitur Delete Record pada Laravel Filament

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:

  1. Modal konfirmasi otomatis
  2. Mendukung soft delete & force delete
  3. Terintegrasi dengan bulk actions
  4. Mendukung authorization dan roles
  5. Notifikasi sukses otomatis
  6. Tidak perlu HTML & JavaScript manual
  7. 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.

Pluginify
Pluginify