Seperti yang kita ketahui, Calendar Report adalah salah satu fitur terbaru di PHPMaker 2023. Dengan menggunakan fitur ini, kita bisa mengelola data kegiatan dan menampilkannya di antar muka kalender dengan sangat mudah dan cepat.
Kita bisa menghasilkan fitur CRUD (Create, Read, Update, Delete) dengan menggunakan Modal Dialog tanpa harus menulis kode dari awal. Semuanya sudah tersedia dan akan dihasilkan oleh PHPMaker 2023, seperti halnya fitur CRUD untuk object Table.
Jika kita baru saja menambahkan sebuah data kegiatan baru, maka hasilnya akan langsung ditampilkan di antarmuka kalender tanpa harus memuat ulang halaman tersebut. Calendar Report dalam hal ini mengandalkan fitur AJAX.
Akibatnya, tidak semua method milik class Page atau Table dapat kita gunakan. Contohnya, method setFailureMessage, yang akan menampilkan pesan error sekaligus membatalkan suatu aksi tertentu. Method ini tidak dapat kita gunakan di Calendar Report.
Jika kita menggunakan method tersebut di Calendar Report, maka sistem akan menampilkan pesan kosong dalam Modal Dialog. Itu artinya, kita tidak dapat menampilkan pesan error tadi. Pesan error baru dapat terlihat, setelah kita memuat ulang (refresh/reload) halaman utama yang menampilkan kalender tadi.
Tentu saja kita tidak menginginkan hal itu terjadi, bukan? Seharusnya, sistem akan menampilkan pesan error tadi dalam kotak pesan yang muncul secara popup, tanpa harus menunggu halaman kalender dimuat ulang (reload/refresh) oleh sistem.
Supaya lebih mudah dipahami, mari kita ambil contoh berikut.
Katakanlah kita ingin memvalidasi data kegiatan yang akan dihapus. Sistem harus memeriksa terlebih dulu, apakah data pada field UserID untuk kegiatan tersebut sesuai dengan data UserID milik si pengguna yang sedang login dan berusaha menghapus data tadi.
Jika data UserID pengguna tidak sesuai di data kegiatan, maka tampilkan pesan kesalahan dan batalkan proses penghapusan. Nah, dalam hal ini kita tidak dapat menggunakan method setFailureMessage di atas tadi.
Lalu, bagaimana dong solusinya? Hohoho, jangan khawatir, karena PHPMaker 2023 sudah menanganinya dengan sangat mudah.
Kita cukup menggunakan fungsi global (global function) yang bernama WriteJson. Mengapa method setFailureMessage tersebut tidak bisa kita gunakan? Karena dalam hal ini sistem tidak memuat ulang halaman utama kalendernya, sementara method tadi menunggu sistem memuat ulang halaman tadi agar dapat menampilkan pesan error tersebut.
Jadi, kita cukup mengeset pesan error melalui penulisan JSON menggunakan fungsi global WriteJson. Caranya? Cukup tambahkan kode berikut ke dalam server event Row_Deleting milik object Calendar Report tadi:
if ($rs["UserID"] != CurrentUserID()) {
// $this->setFailureMessage("Only the owner can Delete"); // <-- do not use this!
WriteJson(["error" => "Only the owner can Delete"]);
return false;
}
Perhatikan kode tersebut. Kita cukup mengeset parameter error dengan pesan error yang kita inginkan. Pastikan juga kita tetap mengembalikan false di bawahnya, supaya sistem membatalkan atau tidak melanjutkan ke proses penghapusan.
Jadi, sekali lagi, jangan pernah menggunakan methode setFailureMessage di Calendar Report untuk menampilkan pesan error saat sistem memvalidasi data. Gunakan fungsi global WriteJson.
Setelah itu, pastikan untuk men-generate ulang semua file script dengan menggunakan PHPMaker 2023 seperti biasa.
Untuk mencobanya, silahkan login menggunakan user admin, lalu cobalah hapus data kegiatan dari antar muka Calendar Report yang data UserID nya tidak sesuai dengan data UserID admin tadi.
Hasilnya, sistem akan menampilkan pesan error Only the owner can Delete seperti yang diharapkan. Jadi, sistem tidak perlu memuat ulang halaman yang berisi kalender tadi untuk menampilkan pesan tersebut.
Tinggalkan Balasan