Masih ingat dengan server event Row_Inserting di PHPMaker yang memungkinkan Web Developer dapat menambahkan kode untuk business-logic tertentu saat Record baru sedang ditambahkan/disimpan ke Database pada Aplikasi Web yang dibuat olehnya? Kali ini kita akan membahas server event yang hampir sama dengan itu dan bernama Row_Updating, yaitu saat Record yang sudah ada sedang diubah/disimpan ke Database.
Server event Row_Updating 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 ini akan dipanggil sebelum memperbarui sebuah Record. Argumen dari server event ini adalah array dari Record yang Lama ($rsold) dan Record yang Baru ($rsnew) yang akan diperbarui. Di server event ini Anda sebagai Web Developer dapat melakukan validasi Record sebelum benar-benar disimpan ke Database. Jika validasi tidak memenuhi syarat, maka Anda dapat membatalkan proses penyimpanan dengan mengembalikan nilai FALSE.
Contoh kode di bawah ini menunjukkan bahwa nilai data yang baru di field Qty tidak boleh lebih kecil dari nilai data yang lama. Jika persyaratan tidak dipenuhi, maka sistem akan membatalkan proses penyimpanan saat itu juga dan menampilkan pesan pembatalan.
function Row_Updating(&$rsold, &$rsnew) { if ($rsnew["Qty"] < $rsold["Qty"]) { // Untuk membatalkan, cukup kembalikan nilai FALSE $this->CancelMessage = "Nilai data yang baru di field Jumlah harus lebih besar atau sama dengan data yang lama."; // tampilkan pesan pembatalan return FALSE; } else { return TRUE; } }
Server event Row_Updating merupakan member dari Class Table. Anda sebagai Web Developer dapat menggunakan member lainnya yang terdapat di Class ini (jika dibutuhkan). Sekali lagi, dengan menggunakan server event ini, Anda sebagai Web Developer masih diberi kesempatan oleh PHPMaker untuk menambahkan proses validasi di sisi server. Jika validasi yang Anda inginkan tidak memenuhi syarat, maka cukup kembalikan nilai FALSE supaya proses penyimpanan dibatalkan; sebaliknya jika validasi sukses, cukup kembalikan nilai TRUE.
Perlu Anda ketahui bahwa server event Row_Updating memiliki persamaan dengan server event Row_Inserting dan Row_Deleting dalam hal pengeksekusiannya yang berbasis Record per Record atau Row per Row. Artinya, server event Row_Updating akan dipanggil untuk setiap satu Record atau Row yang sedang ditambahkan ke Database. Dengan kata lain, server event ini juga akan dipanggil secara berulang-ulang sejumlah banyaknya Record yang sedang dimasukkan dan disimpan pada satu kesempatan ke Database menggunakan fitur Grid-Add atau Grid-Edit yang disediakan oleh PHPMaker.
Betapa mudah dan mengasyikkannya, bukan? 🙂
Tinggalkan Balasan