Setiap halaman di Aplikasi Web yang memiliki Form, baik untuk menambah, mengubah, atau bahkan mencari data, pasti memiliki kode untuk memvalidasi data yang dimasukkan ke Form tersebut. Tidak terkecuali dengan Aplikasi Web yang dihasilkan oleh PHPMaker. Setiap data harus divalidasi terlebih dulu, dan PHPMaker akan membangkitkan kode standar yang bertujuan untuk memvalidasi data yang dimasukkan ke Form tadi.
Sering kali Web Developer ingin menambahkan validasi sendiri selain validasi yang sudah dibuatkan oleh PHPMaker. Untuk itu dibutuhkan mekanisme yang memudahkan Web Developer untuk menerapkan validasi tambahan. Fitur server event selama ini sudah dikenal oleh Web Developer dapat mempercepat proses pengimplementasian business-logic di Aplikasi Web yang dihasilkan oleh PHPMaker.
PHPMaker sudah menyediakan sebuah server event yang bernama Form_CustomValidate. Server event ini dipanggil setelah validasi standar yang dilakukan pada sebuah Form. Anda sebagai Web Developer dapat menggunakan server event ini untuk melakukan validasi yang bisa Anda kostumisasi sendiri. Secara umum, data di suatu Form dapat diakses dengan menggunakan sintaks seperti ini:
$this->NamaFieldAnda->FormValue
Cara alternatif lainnya, Anda dapat memperoleh semua nilai di suatu Form ke dalam sebuah array terlebih dulu:
$rs = $this->GetFieldValues("FormValue");
Setelah itu, Anda cukup mengakses nilai di suatu Field dengan menggunakan sintaks untuk mengakses elemen di suatu array. Katakanlah di Form tadi terdapat tiga Field yang masing-masing bernama Field1, Field2, dan Field3, maka untuk mengakses nilai dari ketiga Field tersebut, cukup dengan menggunakan:
$sField1 = $rs["Field1"]; $sField2 = $rs["Field2"]; $sField3 = $rs["Field3"];
Sebuah argumen $CustomError akan dilewatkan ke server event ini. Anda sebagai Web Developer dapat menambahkan pesan error sendiri (jika perlu), lalu mengembalikan nilai FALSE jika nilai di Form tadi tidak memenuhi persyaratan validasi yang Anda tentukan.
Supaya lebih jelas, mari langsung simak contoh berikut. Kode di bawah ini akan memastikan suatu Field yang bernama Qty harus memiliki nilai Integer dalam kelipatan 10:
function Form_CustomValidate(&$CustomError) { $rs = $this->GetFieldValues("FormValue"); // Dapatkan nilai Form sebagai array if (intval($rs["Qty"]) % 10 <> 0) { // Kembalikan pesan error dengan menggunakan variabel $CustomError $CustomError = "Jumlah Pesanan harus kelipatan 10."; return FALSE; // Kembalikan nilai FALSE jika validasi tidak memenuhi syarat } else { return TRUE; } }
Perlu Anda ketahui, bahwa server event Form_CustomValidate hanya terdapat di beberapa halaman berikut saja: Add/Copy, Edit, List, Multi-Update, dan Search.
Mungkin Anda bertanya, mengapa server event ini terdapat di halaman List dan Search. Sementara yang kita ketahui selama ini, kedua halaman tersebut tidak terkait dengan pemanipulasian data secara langsung ke Database.
Jawabannya tidak lain karena di halaman List terdapat fitur yang memungkinkan Pengguna dapat memperbarui satu atau beberapa Record sekaligus tanpa harus menampilkan halaman Multi-Update terlebih dulu. Sedangkan halaman Search digunakan untuk memungkinkan Web Developer menambahkan validasi data yang dimasukkan di Form Pencarian Lanjutan.
Betapa fleksibelnya PHPMaker dapat digunakan untuk membantu Web Developer dalam membangun Aplikasi Web, bukan? ๐
arigus wahyu mengatakan
selamat siang pak masino, saya baru di phpmaker, maaf mau tanya, misalnya sebelum menambah validasi dilakukan cek data ke tabel lain dulu (melakukan custom query) itu bagaimana caranya? terimakasih
Masino Sinaga mengatakan
Pakai fungsi global yang bernama ew_Execute atau ew_ExecuteScalar untuk melakukan query.
Lihat topik Server Events and Client Scripts dari menu Help PHPMaker, lalu scroll ke bagian paling bawah halaman Help tadi, pelajari sub-topik Some Global Functions untuk informasi lebih lanjut.
arigus wahyu mengatakan
oke pak masino, saya coba dahulu ๐
arigus wahyu mengatakan
terimaksh ๐
Masino Sinaga mengatakan
Sama-sama.
arigus wahyu mengatakan
Ternyata bisa pak masino, terimaskasih pencerahannya :D. ternyata php maker sungguh asik ., oiya pak mau bertnya lagi , php maker bisa mengammbil nilai dari json g ya pak?
misalnya ada:
var contoh_jason= ‘{“arigus”:”arigus wahyu”,”jalan”:”Oslo West 16″,”tlp”:”555 1234567″}’;
saya ingin mengambil “nama” untuk di masukan ke control ttu misalnya textbox setelah event ttu.
mhon pencerahanya lagi pak masino :D, maaf bnyak nanya, masih belajar.
arigus wahyu mengatakan
maaf ralat ๐
ar contoh_jason= โ{โnamaโ:โarigus wahyuโ,โjalanโ:โOslo West 16โณ,โtlpโ:โ555 1234567โณ}โ;
Masino Sinaga mengatakan
Bisa. Pelajari function ew_ExecuteJson yang terdapat pada file phpfn*.php.
arigus wahyu mengatakan
siapa sangka ternyata file phpfn10 ada di dalam file .rar foledr themes, ๐
saya sempat kesulitan mencarinya pak masino, ttetapi akhirnya puji tuhan, ktmu ๐
maaf pak masino kembali mohon pencerahan ๐
saya punya file refDIA.php, dimana ketika dijalankan di browser menghasilkan format json spt dibawh ini,
Array
(
[metadata] => Array
(
[code] => 200
[message] => OK
)
[response] => Array
(
[count] => 20
[limit] => 20
[list] => Array
(
[0] => Array
(
[kodeDiagnosa] => C25
[namaDiagnosa] => Malignant
)
[1] => Array
(
[kodeDiagnosa] => C47
[namaDiagnosa] => Malignant neoplasm
)
)
[start] => 0
)
)
kemudian saya memanggil fungsi yang bapak jelaskan diatas sebagai berikut
CLientScript->Tablespecific->addadnCopyPage->startup scrpit
$(“input[name=’x_ContactName[]’]”).click(function() {
if (this.checked) {
alert(“tes alert cek”);
ContactTitle->CurrentValue = $hasil_json->response[0]->namaDiagnosa;
?>
} else {
alert(“tes alert un cek”);
}
});
ketika dijalankan dibrowser tidak bisa menampilkan data dari file php yang berisi formatjson tsb, apakah saya salah dalam meuliskan kode, apkah sya salah dalam mempergunakan parameter fungsi, atau bukan seperti ini menulis kodenya di php maker, ataukah ada kesalahan yang saya tidak tau , mhon pencerahannya pak masino, masih awam di phpmaker,
Masino Sinaga mengatakan
Sori, belum bisa bantu. Silahkan baca-baca dan pelajari lagi menu Help.
arigus wahyu mengatakan
ralat kode maaf pak masino ๐
$(“input[name=’x_ContactName[]’]”).click(function() {
if (this.checked) {
alert(“tes alert cek”);
ContactTitle->CurrentValue = $hasil_json->response[0]->namaDiagnosa;
?>
} else {
alert(“tes alert un cek”);
}
});
arigus wahyu mengatakan
ketika komentnya dipublish , ada bagian kode yang hilang, ini sengaja saya kasih command
/*
$(“input[name=’x_ContactName[]’]”).click(function() {
if (this.checked) {
alert(“tes alert cek”);
ContactTitle->CurrentValue = $hasil_json->response[0]->namaDiagnosa;
?>
} else {
alert(“tes alert un cek”);
}
}); */
arigus wahyu mengatakan
// $hasil_json = ew_ExecuteJson(“refDIA.php”,$FirstOnly = TRUE);
seharus nya ada bagian ini ๐
kok hilang lagi ya??, mhon maaf sekali pak masino, bkin spam di komentar
Masino Sinaga mengatakan
Silahkan dicoba sendiri ya.
Fajar mengatakan
selmat pagi pak masino ,
saya mencoba script
$rs = $this->GetFieldValues(“FormValue”);
$tt = $rs[“nom”];
if ($tt > 5 ) {
$CustomError = “Jumlah Pembelian Tidak Boleh”;
return FALSE;
}
else {
return TRUE;
}
filed nom itu harus di isi kurang dari angka 5,
saya memakai php maker v 2017.0.7 .
saya memakai Form_CustomValidate pada halaman add.
tetapi saya terkendala, tidak daapat tervalidasi, berapapun nilai nya ttp bisa masuk. mhon pencerahan pak masino, saya salah dimana. terimkash
Masino Sinaga mengatakan
Ganti baris ini:
$tt = $rs[โnomโ];
menjadi:
$tt = intval($rs[โnomโ]);
bagus mengatakan
V2019, coba di master detail. di tabel masternya di bagian server-table spesific-add/copy page-FormCustomValidate. kasih ini kok tak muncul messagenya & tak kesimpan, ada saya kurang dimana ? diberi intval juga sama. Terimakasih
function Form_CustomValidate(&$CustomError) {
$rs = $this->GetFieldValues(“FormValue”);
if ($rs[“kepalaKK”] = “”) {
$CustomError = “harus isi detail nama Kepala Keluarga.”;
return FALSE;
} else {
return TRUE;
}
}
Masino Sinaga mengatakan
Wah, sudah lama tidak pakai v2019. Rata-rata aplikasi web saya sudah di-upgrade minimal ke v2020.
Itu nama field-nya sudah benar kepalaKK? Bukan KepalaKK?
bagus mengatakan
oh ternyata harus huruf kecil c nya menjadi $customError .
Tanya lagi bang, kalau $rs = $this->GetFieldValues(โFormValueโ);
tapi fieldnya ambil dari tabel detail bagaimana caranya ?
tujuannya agar ketika input master tabel juga harus input detail tabel.
type pagenya accordion. thanks
Masino Sinaga mengatakan
Pakai global function ExecuteScalar().
Lihat di sub-topic Some Global Functions di bawah topik Server Events and Client Scripts dari menu Help PHPMaker.