Kontrol Validasi

Kontrol validasi disebut validator, melakukan validasi terhadap nilai data yang dimasukan-pengguna saat ia ditulis kembali ke server. Validasi dipicu oleh kontrol postback, seperti properti TButton, TLinkButton atau TTextBox (di bawah mode AutoPostBack) di mana properti CausesValidation adalah true.

Validasi selalu dilakukan pada sisi server. Jika EnableClientScript adalah true dan browser klien mendukung JavaScript, validator juga dapat melakukan validasi sisi-klien. Validasi sisi-klien akan memvalidasi input pengguna sebelum ia mengirimkannya ke server. Data formulir tidak akan dikirmkan jika ada kesalahan terdeteksi. Ini menghindari informasi yang diperlukan untuk validasi sisi-server.

Validator dengan berbagai set properti umum yang didefinisikan dalam basis kelas TBaseValidator dan didaftarkan sebagai berikut,

Kontrol Validasi Prado

TRequiredFieldValidator

TRequiredFieldValidator memastikan bahwa pengguna memasukan beberapa data dalam field input yang ditetapkan. Standarnya TRequiredFieldValidator akan memeriksa apakah input pengguna kosong atau tidak. Validasi gagal jika input kosong. Dengan menyetel InitialValue, validator dapat memeriksa apakah input pengguna berbeda dari InitialValue. Jika tidak, validasi gagal.

TRegularExpressionValidator

TRegularExpressionValidator memverifikasi input pengguna terhadap pola reguler. Validasi gagal jika input tidak sama dengan pola. Ekspresi reguler bisa ditetapkan dengan properti RegularExpression. Beberapa ekspresi reguler yang umumnya dipakai termasuk:

Pola ekspresi reguler lebih jauh dapat ditemukan di Internet, misalnya http://regexlib.com/.

Catatan, TRegularExpressionValidator hanya memeriksa input pengguna yang tidak kosong. Gunakan TRequiredFieldValidator untuk memastikan input pengguna tidak kosong.

TEmailAddressValidator

TEmailAddressValidator memverifikasi bahwa input pengguna adalah alamat email yang benar. Validator menggunakan ekspresi reguler untuk memeriksa apakah input adalah format alamat email yang benar. Jika CheckMXRecord adalah true, validator juga akan memeriksa apakah rekaman MX yang diindikasikan dalam alamat email adalah benar, checkdnsrr() tersedia dalam PHP yang diinstalasi.

Catatan, jika input yang divalidasi kosong, TEmailAddressValidator tidak akan melakukan validasi. Gunakan TRequiredFieldValidator untuk memastikan nilai tidak kosong.

TCompareValidator

TCompareValidator membandingkan input pengguna dengan nilai konstan yang ditetapkan oleh ValueToCompare, atau input pengguna lain yang ditetapkan oleh ControlToCompare. Properti Operator menetapkan bagaimana untuk membandingkan nilai, yang menyertakan Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan dan LessThanEqual. Sebelum perbandingkan, nilai yang dibandingkan akan diubah ke tipe yang ditetapkan oleh DataType seperti didaftarkan sebagai berikut,

  • String - Tipe data string.
  • Integer - Tipe data integer signed 32-bit.
  • Float - Tipe data pecahan presisi-ganda.
  • Date - Tipe data tanggal. Format tanggal dapat ditetapkan dengan menyeting properti DateFormat, yang harus dikenal oleh TSimpleDateFormatter. Jika properti tidak disetel, sintaks tanggal GNU diasumsikan.

Catatan, jika input yang sedang divalidasi kosong, TEmailAddressValidator tidak akan melakukan validasi. Gunakan TRequiredFieldValidator untuk memastikan nilai tidak kosong.

N.B. Jika memvalidasi terhadap TDatePicker properti DataType harus sama dengan "Date" dan properti DateFormat pada validator harus sama dengan DateFormat pada TDatePicker.

TDataTypeValidator

TDataTypeValidator memverifiksai apakah data input adalah tipe spesifik sepeti ditunjukan oleh DataType. Tipe data dapat diperiksa kembali apakah sama seperti yang ada dalam TCompareValidator.

N.B. Jika memvalidasi terhadap TDatePicker properti DataType harus sama dengan "Date" dan properti DateFormat pada validator harus sama dengan DateFormat pada TDatePicker.

TRangeValidator

TRangeValidator memverifikasi apakah nilai input di dalam jangkauan yang ditetapkan. TRangeValidator menggunakan properti kunci untuk melakukan validasinya. Properti MinValue dan properti MaxValue menetapkan nilai minimum dan maksimum dari jangkauan yang benar. Properti DataType menetapkan tipe data dari nilai yang sedang divalidasi. Pertama, nilai akan diubah ke dalam tipe yang ditetapkan dan kemudian dibandingkan dengan jangkauan yang benar. Tipe data bisa diperiksa apakah sama dengan yang ada dalam TCompareValidator.

Jika properti StrictComparison disetel ke true, maka jangkauan dibandingkan semata-mata kurang dari MaxValue dan/atau lebih besar dari MinValue.

N.B. Jika memvalidasi terhadap TDatePicker properti DataType harus sama dengan "Date" dan properti DateFormat pada validator harus sama dengan DateFormat pada TDatePicker.

TCustomValidator

TCustomValidator melakukan validasi didefinisikan-pengguna (baik sisi-server atau sisi-klien ataupun keduanya) pada kontrol input.

Untuk membuat fungsi validasii sisi-server, sediakan pengendali untuk event OnServerValidate yang melakukan validasi. String data pada kontrol input untuk memvalidasi dapat diakses dengan parameter event properti Value. Hasil validasi harus disimpan dalam properti IsValid pada parameter.

Untuk membuat fungsi validasi sisi-klien, tambahkan fungsi validasi javascript ke template halaman dan tempatkan namanya ke properti ClientValidationFunction. Fungsi harus memiliki tanda sebagai berikut:

TValidationSummary

TValidationSummary menampilkan ringkasan dari kesalahan inline validasi pada halaman Web, dalam kotak pesan, atau keduanya.

Standarnya ringkasan validasi akan mengumpulkan ErrorMessage dari semua validator yang gagal pada halaman. Jika ValidationGroup tidak kosong, hanya validator itu yang dimiliki grup akan menampilkan pesan kesaslahannya dalam ringkasan.

Ringkasan dapat ditampilkan sebagai daftar, daftar bertitik, atau satu paragraf berdasarkan properti DisplayMode. Pesan yang ditampilkan dapat diawali dengan HeaderText. Ringkasan dapat ditampilkan pada halaman Web atau kotak pesan JavaScript, masing-masing dengan menyetel properti ShowSummary dan ShowMessageBox. Catatan, yang terakhir hanya efektif saat EnableClientScript adalah true.

Berinteraksi dengan Validator

Mereset atau Membersihkan Validator

Validator bisa mereset pada sisi-klien menggunakan javascript dengan memanggil Prado.Validation.reset(groupID) di mana groupID adalah nama pengelompokan. Jika groupID adalah null, maka validator tanpa pengelompokan yang dipakai.

Validasi Kondisional Sisi Server dan Klien

Semua validator berisi event berikut. Event terkait untuk sisi klien tersedia sebagai sub-properti dari properti ClientSide pada validator.

  • Event OnValidate muncul sebelum fungsi validasi validator yang dipanggil.
  • Event OnValidationSuccess muncul setelah validator sukses memvalidasi kontrol.
  • Event OnValidationError muncul setelah validator gagal memvalidasi.
Catatan: Untuk Prado sebelum versi 3.1 nama properti adalah OnError dan OnSuccess. Untuk Prado versi 3.1 dan berikutnya masing-masing OnValidationError dan OnValidationSuccess.

Contoh berikut memunculkan pesan yang mengatakan "hello" saat validator gagal pada sisi-klien. <com:TRequiredFieldValidator ... > <prop:ClientSide.OnValidationError> alert("hello"); </prop:ClientSide.OnValidationError> </com:TRequiredFieldValidator> Hasil event fungsi callback sisi-klien adalah dalam bentuk seperti berikut. function onErrorHandler(sender, parameter) { alert("hello"); } di mana sender adalah vaidator sisi-klien saat ini dan parameter adalah kontrol yang memanggil validator.

Contoh Validasi Kondisional

Contoh berikut memperlihatkan penggunaan event validator sisi-klien dan sisi server. Contoh mendemonstrasikan validasi kondisional. Catatan bahwa, kita perlu menuliskan kode untuk sisi server dan klien. Selanjutnya, pada sisi server, kita perlu menghidupkankembali validator kondisional agar kode javascript dihasilkan tanpa mempedulikan apapun (sebaliknya, validator sisi-klien tidak tersedia).