Ada satu pertanyaan yang cukup bagus terkait dengan artikel Menyembunyikan Tombol Edit Berdasarkan Kondisi Tertentu dari PHPMaker 2021.
Sekedar mengingatkan kembali, artikel di atas menjelaskan betapa mudahnya kita dapat menyembunyikan tombol atau link Edit yang menampilkan form Edit untuk mengubah data. Artinya, meskipun kita dapat menyembunyikan tombol Edit tadi, maka Pengguna Akhir masih tetap dapat mengakses halaman Edit melalui URL-nya. Cukup dengan menyalin link tersebut ke browser, maka form Edit akan terbuka.
Tentu saja kemungkinan-kemungkinan seperti itu harus bisa ditangani. Artinya, kita harus dapat mencegah Pengguna Akhir mengubah data hanya untuk kriteria tertentu sesuai dengan yang sudah kita bahas pada artikel di atas tadi. Jangan sampai Pengguna Akhir bisa mengakali dengan langsung akses lewat URL halaman Edit-nya.
Caranya bagaimana? Ternyata gampang sekali. Kita cukup menggunakan server event Row_Selected. Seperti namanya, server event ini akan dipanggil oleh sistem ketika Pengguna baru saja berhasil memilih suatu record tertentu.
Kita bisa menggunakan server event ini untuk menambahkan business-logic yang akan mencegah Pengguna Akhir mengakses record tertentu. Jadi, ketika halaman Edit untuk record tertentu diakses, maka kita bisa mencegahnya untuk mengakses halaman tersebut.
Katakanlah kita masih menggunakan contoh yang sama yang dibahas pada artikel di atas, maka kita cukup menambahkan sedikit kode PHP saja ke dalam server event Row_Selected yang lokasinya berada di bawah Server Events -> Table-Specific -> Common, milik table orders:
// Row Selected event function Row_Selected(&$rs) { //Log("Row Selected"); if ($rs["OrderID"] != "11085" && CurrentPageID() == "edit") { $this->setFailureMessage("Anda tidak diijinkan mengubah data pesanan dengan ID = 11085"); $this->terminate("orderslist"); } }
Kode di atas artinya, jika Pengguna Akhir mengakses langsung halaman Edit untuk record dengan OrderID = 11085, dengan cara menyalin URL yang bertalian ke browser, maka sistem akan mencegah, dengan menampilkan pesan Anda tidak diijinkan mengubah data pesanan dengan ID = 11085. Setelah itu, sistem akan otomatis me-redirect ke halaman List milik table orders.
Betapa mudah dan cepat sekali, bukan? Tidak perlu menulis kode sampai berpuluh-puluh, beratus-ratus, atau bahkan beribu-ribu baris. Mengapa? Karena PHPMaker 2021 sudah menangani sisanya. Kita hanya cukup menambahkan sedikit kode PHP itu saja.
luthfi mengatakan
kang mau nanya kalo kita menggunakan costume file untuk creat table tapi ada list_optionsnya gimana ya, saya tadinya mau pake function bawaan ExecuteHtml($sql,[options]), tapi nyari options yang buat list options tidak ada ya kang ? btw saya menggunakan v2020
Masino Sinaga mengatakan
Kalau pakai function ExecuteHtml, kita tidak dapat menambahkan fitur ListOptions seperti di halaman List yang di-generate oleh PHPMaker.
Kalau ingin menggunakan ListOptions, disarankan tetap menggunakan halaman List hasil generate dari PHPMaker kang.
luthfi mengatakan
Oke Kang Masino Terimakasih… atas saranya
Masino Sinaga mengatakan
Sama-sama.