Masih ingat dengan kemampuan PHPMaker yang memungkinkan Web Developer untuk menyaring kumpulan Record sebelum ditampilkan ke sebuah Aplikasi Web dengan menggunakan server event Recordset_Selecting? Di tulisan ini kita akan membahas kemampuan yang mirip dengan itu. Kali ini kita akan membahas mengenai server event yang bernama Row_Selecting.
Perbedaan di antara kedua server event tersebut adalah kalau di Recordset_Selecting kita dapat menyaring kumpulan dari beberapa Record sekaligus, maka di Row_Selecting kita dapat menyaring hanya sebuah Record sebelum ditampilkan ke Aplikasi Web. Hal ini bermanfaat untuk digunakan di halaman Salin (Copy), Ubah (Edit), dan Hapus (Delete) untuk sebuah Record.
Lokasi server event Row_Selecting berada di bawah Server Events -> Table-Specific -> Common. Pastikan sebelumnya Anda sudah memilih salah satu Table yang Anda inginkan dari panel Database di sebelah kiri dari project PHPMaker Anda, untuk memastikan Anda menambahkan kode di server event pada Table yang tepat.
Seperti namanya, server event Row_Selecting akan dipanggil sebelum memilih sebuah Record. Argumen dari server event ini adalah $filter (yang merupakan bagian dari klausa WHERE di SQL) untuk memilih sebuah Record. Anda dapat mengkostumais argumen penyaringan tersebut untuk mengganti Record yang akan dipilih.
Perlu diingat, bahwa server event Row_Selecting secara standar (by default) hanya akan dipanggil di halaman Copy untuk memvalidasi apakah sebuah Record diijinkan oleh sistem untuk disalin Pengguna atau tidak. Hal ini tentu saja sangat bermanfaat bagi Anda sebagai Web Developer jika ingin memeriksa atau memvalidasi sebuah Record terlebih dulu sebelum dapat disalin atau di-copy oleh Pengguna Aplikasi Web Anda.
Supaya lebih jelas, langsung saja kita simak contoh berikut. Katakanlah dari Aplikasi Web yang dihasilkan oleh file project demo yang disediakan oleh PHPMaker (menggunakan database MySQL), kita akan mengijinkan hanya sebuah Record Mobil saja yang memiliki ID sama dengan 2 yang dapat disalin oleh Pengguna. Kode selengkapnya di server event Row_Selecting akan menjadi seperti ini:
// Row_Selecting event function Row_Selecting(&$filter) { // Enter your code here ew_AddFilter($filter, "`ID` = 2"); }
Setelah file script di-generate ulang oleh PHPMaker lalu Aplikasi Web dijalankan di browser, maka ketika Pengguna mencoba menyalin Record Mobil yang ID-nya tidak sama dengan 2, sistem akan menampilkan pesan No records found, yang artinya tidak ada record ditemukan. Hal ini terjadi karena sistem akan menyaring hanya Record yang memiliki ID sama dengan 2 saja yang boleh disalin. Sekarang silahkan Anda coba menyalin Record berdasarkan ID = 2, maka sistem akan mengijinkan Pengguna untuk menyalin Record tersebut.
Enaknya lagi, berdasarkan server event Row_Selecting tersebut, Anda sebagai Web Developer dapat membatasi Record yang akan diubah atau dihapus. Jadi, berdasarkan contoh kasus di atas tadi, sistem tidak mengijinkan Pengguna untuk mengubah atau menghapus Record Mobil yang ID-nya tidak sama dengan 2.
Untuk menangani pengubahan Record, maka kita akan menggunakan server event lainnya yang bernama Page_Render milik halaman Edit untuk memanggil method milik class Table yang bernama LoadRow; di mana method ini akan memanggil server event Row_Selecting. Catatan: server event Page_Render akan kita bahas lebih lanjut di artikel terpisah yang akan datang. Jadi, sabar saja ya, dan ikuti terus artikel-artikel di situs ini yang akan selalu diterbitkan satu artikel per hari:
// Page Render event function Page_Render() { //echo "Page Render"; if (!$this->LoadRow()) { $this->setFailureMessage("Tidak diijinkan untuk diubah."); $this->Page_Terminate("carslist.php"); } }
Dalam contoh kode di atas ini, jika Record Mobil tidak diijinkan oleh sistem untuk diubah (ditandai dengan dicegahnya Pengguna menampilkan form Ubah/Edit untuk Record Mobil yang ID-nya tidak sama dengan 2, maka sistem akan menampilkan pesan Tidak diijinkan untuk diubah, dan seketika itu juga sistem akan me-redirect Pengguna ke halaman List yang menampilkan daftar Record-Record Mobil.
Sedangkan untuk menangani di halaman Hapus (Delete) sebuah Record, Anda sebagai Web Developer cukup hanya menambahkan kode yang di atas barusan ke dalam server event Page_Load:
// Page Load event function Page_Load() { //echo "Page Load"; if (!$this->LoadRow()) { $this->setFailureMessage("Tidak diijinkan untuk dihapus."); $this->Page_Terminate("carslist.php"); } }
Wouw, untuk kesekian kalinya… betapa mudahnya Anda bisa menerapkan business-logic yang mirip dengan hal tersebut di Aplikasi Web yang dihasilkan oleh PHPMaker. Menyenangkan sekali, bukan? 🙂
Tinggalkan Balasan