Jika ingin menghapus data (misal: menghapus row data pada tabel), Anda mungkin langsung melakukan penghapusan (dengan klik pada icon delete/trash), karena untuk membuat ini cukup mudah. Seharusnya selalu ada konfirmasi sebelum data benar-benar dihapus, karena bisa jadi user salah klik. Sayangnya, (sebelum ada DQS) membuat konfirmasi hapus cukup rumit. Tapi sesudah Anda membaca artikel ini, membuat konfirmasi hapus menjadi lebih mudah, setidaknya tinggal copy paste
Untuk lebih jelasnya, silakan langsung mencoba demo nya di menu kiri: Tutorial Konfirmasi Hapus/Delete.
Membuat konfirmasi hapus sedikit rumit, karena melibatkan pembuatan
form. Bayangkan, menambah form berarti menambah dua fungsi hanya untuk
membuat konfirmasi hapus.
Kita akan membuat konfirmasi hapus, dimana untuk menghapus suatu
data user harus meng-klik suatu link. Link ini memuat ID dari data
yang akan dihapus. URL (path) untuk ini adalah: dqs_confirm/del/100. Perhatikan bahwa "100" adalah ID dari data yang akan dihapus, dan merupakan parameter (argument) ke-2.
Pertama kita harus membuat dispatcher agar mengenali path ini:
// path: dqs_confirm/del/$id
$items[] = array(
'path' => 'dqs_confirm/del',
'title' => 'Hapus Biodata',
'callback' => 'drupal_get_form',
'callback arguments' => array('dqs_confirm_delete_biodata', arg(2)),
'access' => user_access('dqs_confirm user'),
'type' => MENU_CALLBACK
);
Kemudian, kita harus membuat fungsi yang mendefinisikan form konfirmasi hapus:
function dqs_confirm_delete_biodata($idbiodata) {
$deskripsi = "Biodata dengan ID 100";
$form['deskripsi'] = array('#type' => 'value', '#value' => $deskripsi);
$form['idbiodata'] = array('#type' => 'value', '#value' => $idbiodata);
return confirm_form($form,
"Yakin akan menghapus $deskripsi?",
'dqs_confirm',
'Data yang sudah dihapus tidak dapat dipulihkan kembali.',
'Hapus',
'Batal');
}
Penting untuk diperhatikan bahwa fungsi tersebut belum melakukan
penghapusan aktual. Oleh karena itu, semua informasi yang diperlukan
untuk penghapusan harus disertakan sebagai elemen form agar dapat
diteruskan ke fungsi submit. Anda dapat menyertakan elemen form
sebanyak-banyaknya.
Terakhir, tinggal buat fungsi submit yang akan benar-benar menghapus data berdasarkan informasi elemen form.
function dqs_confirm_delete_biodata_submit($form_id, $form_values) {
if ($form_values['confirm']) {
$idbiodata = $form_values['idbiodata'];
$deskripsi = $form_values['deskripsi'];
// proses hapus dengna menggunakan idbiodata disini...
drupal_set_message("$deskripsi sudah dihapus.");
drupal_goto('dqs_confirm');
}
}
OK semoga contoh yang disederhanakan ini menjadikan alur konfirmasi
cukup jelas. Jika masih bingung, tidak papa, namanya juga sudah level
Intermediate
Sekarang copy paste dulu, lain waktu nanti bisa diresapi lagi algoritmanya
