CRUD Manajemen Artikel - Menghapus Artikel
9 Maret 2025
ยท
5 menit ยท

Sebelumnya, kita sudah menyelesaikan fitur Create, Read, dan Update. Kali ini, mari kita lengkapi CRUD dengan menambahkan fitur Delete.
Menyesuaikan Controller untuk Menghapus Artikel
Kita akan mulai dengan menyesuaikan method destroy()
pada ArticleController
untuk menghapus artikel dari database beserta file gambarnya (jika ada).
Berikut kode yang perlu kita sesuaikan:
๐ app/Http/Controllers/ArticleController.php
|
|
- Baris 16-22
Memeriksa apakah artikel memiliki gambar. Jika ya, kita hapus gambar tersebut dari penyimpanan menggunakan Storage.Untuk mempelajari File Storage dalam Laravel, silakan merujuk pada dokumentasi Laravel: Deleting Files dan Retrieving Files. - Baris 24
Menghapus data artikel dari database. - Baris 26, 30
Mengembalikan response JSON menggunakan helper response(), baik saat berhasil maupun saat gagal (error 500 โ Internal Server Error).
Instalasi dan Konfigurasi HTMX
Untuk membuat tombol delete yang responsif tanpa reload halaman, kita akan menggunakan HTMX, sebuah library yang memudahkan pengiriman request AJAX tanpa perlu banyak menulis kode JavaScript.
Untuk meng-install HTMX, jalankan perintah berikut:
sail npm install [email protected]
Versi HTMX yang kita gunakan adalah versi 2.0.4.
Selanjutnya, daftarkan HTMX pada file app.js sebagai berikut:
๐ resources/js/app.js
|
|
Pastikan proses Vite sedang berjalan. Jika belum, jalankan perintah berikut:
sail npm run dev
Menambahkan Tombol Delete pada DataTable
Edit class DataTable pada file berikut:
๐ app/DataTables/ArticleDataTable.php
|
|
- Baris 15-24
Menambahkan tombol delete menggunakan HTMX:hx-vals
menambahkan nilai yang dikirimkan bersamaan dengan request (dalam format JSON). Dalam hal ini, kita menyisipkan token CSRF.Untuk mempelajari lebih lanjut mengenai Proteksi CSRF, silakan merujuk pada dokumentasi Laravel: CSRF Protection.hx-delete
mengirimkan request HTTP dengan method DELETE ke URL yang dituju.hx-confirm
menampilkan kotak dialog konfirmasi sebelum mengirimkan request.hx-swap
menentukan bagaimana konten akan digantikan. Nilainone
menandakan HTMX tidak mengubah tampilan berdasarkan response yang diperoleh dari server.hx-on::after-request
menetapkan fungsi JavaScript yang akan dijalankan setelah HTMX menerima response dari server.onDeleteAfterRequest(event)
adalah event listener buatan yang akan kita tambahkan nanti untuk dijalankan setelah request selesai dijalankan.Untuk melihat atribut HTMX apa saja yang tersedia, silakan merujuk pada dokumentasi HTMX: Reference.
- Baris 39-41
Menginisialisasi ulang seluruh atribut HTMX yang digunakan pada DOM (Document Object Model) tabel setiap kali DataTable selesai di-render, agar elemen tombol delete tetap aktif dan berfungsi dengan baik. - Baris 45
Mengurutkan data tabel berdasarkan nilai pada kolom ke-5 (Waktu Pembaruan) dari terbaru hingga terlama. - Baris 64
Mengatur lebar kolomaction
menjadi 125px.
Hasil dari pengubahan di atas adalah sebagai berikut:

Menangani Event Setelah Request Selesai Dijalankan
Masih ingat dengan atribut HTMX berikut, kan?hx-on::after-request="onDeleteAfterRequest(event)"
Kita akan menambahkan event listener onDeleteAfterRequest()
untuk merespons hasil penghapusan setelah tombol delete diklik.
Tambahkan kode berikut ke dalam view index.blade.php:
๐ resources/views/pages/articles/index.blade.php
|
|
- Baris 8
Mengekstrak nilaistatus
danresponseText
dariev.detail.xhr
dengan teknik object destructuring. - Baris 9
Melakukan parsing response JSON menjadi objek JavaScript yang bisa digunakan. - Baris 11-14
Jika status bernilai 200 (artinya data berhasil dihapus), kode pada baris 12 akan mendapatkan instance DataTable menggunakan ID dan kode pada baris 13 akan meng-load ulang data pada tabel dari server, tanpa mengubah halaman atau pagination. - Baris 16
Menampilkan pesan dari response server dalam bentuk alert pada browser.
Hasil Akhir
Dengan menambahkan fitur Delete, kini fitur CRUD kita sudah lengkap! ๐
Berikut adalah proses saat kita menekan tombol delete pada salah satu data artikel…


Tombol Delete akan langsung menghapus data tanpa reload halaman, memberikan pengalaman pengguna yang lebih cepat dan mulus โ semua ini berkat HTMX yang ringan dan elegan.
Beberapa keuntungan menggunakan HTMX:
- Tidak perlu reload halaman penuh.
- Interaksi pengguna terasa lebih responsif.
- Tidak perlu menulis kode JavaScript yang kompleks.
Pada artikel berikutnya, kita akan mempercantik tampilan halaman depan blog agar lebih menarik!
Kita sudah hampir tiba di penghujung seri ini. Tinggal sedikit lagi untuk menyempurnakan aplikasi blog yang sudah kita bangun bersama!
Sudah siap buat aplikasi blog kita jadi makin sempurna?! โจ๐ฅ