Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<com:TContent ID="body" >
2
 
3
<h1 id="4901">Kontrol Validasi</h1>
4
 
5
<p id="560337" class="block-content">
6
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 <tt>TButton</tt>, <tt>TLinkButton</tt> atau <tt>TTextBox</tt> (di bawah mode <tt>AutoPostBack</tt>) di mana properti <tt>CausesValidation</tt> adalah true.
7
</p>
8
 
9
<p id="560338" class="block-content">
10
Validasi selalu dilakukan pada sisi server. Jika <tt>EnableClientScript</tt> 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.
11
</p>
12
 
13
<p id="560339" class="block-content">
14
Validator dengan berbagai set properti umum yang didefinisikan dalam basis kelas <tt>TBaseValidator</tt> dan didaftarkan sebagai berikut,
15
</p>
16
<ul id="u1" class="block-content">
17
<li><tt>ControlToValidate</tt> menetapkan kontrol input yang divalidasi. Properti ini harus disetel ke path ID dari kontrol input. Path ID adalah ID titik-terkoneksi dari kontrol yang menjangkai dari tempat penamaan validator ke kontrol sasaran.</li>
18
<li><tt>ErrorMessage</tt> menetapkan pesan kesalahan untuk ditampilkan seandainya validator terkait gagal.</li>
19
<li><tt>Text</tt> mirip dengan <tt>ErrorMessage</tt>. Jika keduanya ada, <tt>Text</tt> diambil lebih dulu. Properti ini berguna saat dipakai bersama dengan <tt>TValidationSummary</tt>.</li>
20
<li><tt>ValidationGroup</tt> menetapkan di grup mana validator berada. Validator hanya akan melakukan validasi jika postback saat ini dipicu oleh kontrol yang berada dalam grup yang sama.</li>
21
<li><tt>EnableClientScript</tt> menetapkan apakah validasi harus dilakukan di sisi-klien atau server. Standarnya dihidupkan.</li>
22
<li><tt>Display</tt> menetapkan bagaimana pesan kesalahan ditampilkan. Ia mengambil salah satu dari tiga nilai berikut ini:
23
    <ul>
24
    <li><tt>None</tt> - pesn kesalahan tidak akan ditampilkan meskipun validator gagal.</li>
25
    <li><tt>Static</tt> - spasi untuk menampilkan pesan kesalahan disiapkan. Oleh karena itu, menampilkan pesan kesalahan tidak akan mengubah tata letak halaman anda yang sudah ada.</li>
26
    <li><tt>Dynamic</tt> - spasi untuk menampilkanpesan kesalahan TIDAK disiapkan. Oleh karena itu, menampilkan pesan kesalahan akan menggeser tata letak halaman anda (biasanya ke bawah).</li>
27
    </ul>
28
</li>
29
<li><tt>ControlCssClass</tt> - kelas CSS yang diterapkan ke kontrol yang sedang divalidasi seandainya validasi gagal.</li>
30
<li><tt>FocusOnError</tt> - menyetel fokus di tempat validasi jika validasi gagal. Standarnya false.</li>
31
<li><tt>FocusElementID</tt> - ID dari elemen HTML yang akan menerima fokus jika validasi gagal dan <tt>FocusOnError</tt> adalah true.</li>
32
</ul>
33
 
34
<h1 id="116008">Kontrol Validasi Prado</h1>
35
<a name="TRequiredFieldValidator"></a>
36
<h2 id="4902">TRequiredFieldValidator</h2>
37
<p id="560340" class="block-content">
38
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 <tt>InitialValue</tt>, validator dapat memeriksa apakah input pengguna berbeda dari <tt>InitialValue</tt>. Jika tidak, validasi gagal.
39
</p>
40
<com:RunBar PagePath="Controls.Samples.TRequiredFieldValidator.Home" />
41
 
42
<a name="TRegularExpressionValidator"></a>
43
<h2 id="4903">TRegularExpressionValidator</h2>
44
<p id="560341" class="block-content">
45
TRegularExpressionValidator memverifikasi input pengguna terhadap pola reguler. Validasi gagal jika input tidak sama dengan pola. Ekspresi reguler bisa ditetapkan dengan properti <tt>RegularExpression</tt>. Beberapa ekspresi reguler yang umumnya dipakai termasuk:
46
</p>
47
<ul id="u2" class="block-content">
48
<li>Setidaknya 6 karakter: <code>[\w]{6,}</code></li>
49
<li>Nomor Telepon Jepang: <code>(0\d{1,4}-|\(0\d{1,4}\) ?)?\d{1,4}-\d{4}</code></li>
50
<li>Kode Pos Jepang: <code>\d{3}(-(\d{4}|\d{2}))?</code></li>
51
<li>Nomor Telepon P.R.C.: <code>(\(\d{3}\)|\d{3}-)?\d{8} </code></li>
52
<li>Kode Pos P.R.C.: <code>\d{6}</code></li>
53
<li>Nomor Keamanan Sosial P.R.C.: <code>\d{18}|\d{15}</code></li>
54
<li>Nomor Telepon Amerika: <code>((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}</code></li>
55
<li>Kode ZIP Amerika: <code>\d{5}(-\d{4})?</code></li>
56
<li>Nomor Keamanan Sosial Amerika: <code>\d{3}-\d{2}-\d{4}</code></li>
57
</ul>
58
<p id="560342" class="block-content">
59
Pola ekspresi reguler lebih jauh dapat ditemukan di Internet, misalnya
60
<a href="http://regexlib.com/">http://regexlib.com/</a>.
61
</p>
62
<p id="560343" class="block-content">
63
Catatan, TRegularExpressionValidator hanya memeriksa input pengguna yang tidak kosong. Gunakan TRequiredFieldValidator untuk memastikan input pengguna tidak kosong.
64
</p>
65
<com:RunBar PagePath="Controls.Samples.TRegularExpressionValidator.Home" />
66
 
67
<h2 id="TEmailAddressValidator">TEmailAddressValidator</h2>
68
<p id="560344" class="block-content">
69
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 <tt>CheckMXRecord</tt> adalah true, validator juga akan memeriksa apakah rekaman MX yang diindikasikan dalam alamat email adalah benar, <tt>checkdnsrr()</tt> tersedia dalam PHP yang diinstalasi.
70
</p>
71
<p id="560345" class="block-content">
72
Catatan, jika input yang divalidasi kosong, TEmailAddressValidator tidak akan melakukan validasi. Gunakan TRequiredFieldValidator untuk memastikan nilai tidak kosong.
73
</p>
74
<com:RunBar PagePath="Controls.Samples.TEmailAddressValidator.Home" />
75
 
76
<a name="TCompareValidator"></a>
77
<h2 id="4904">TCompareValidator</h2>
78
<p id="560346" class="block-content">
79
TCompareValidator membandingkan input pengguna dengan nilai konstan yang ditetapkan oleh <tt>ValueToCompare</tt>, atau input pengguna lain yang ditetapkan oleh <tt>ControlToCompare</tt>. Properti <tt>Operator</tt> menetapkan bagaimana untuk membandingkan nilai, yang menyertakan <tt>Equal</tt>, <tt>NotEqual</tt>, <tt>GreaterThan</tt>, <tt>GreaterThanEqual</tt>, <tt>LessThan</tt> dan <tt>LessThanEqual</tt>. Sebelum perbandingkan, nilai yang dibandingkan akan diubah ke tipe yang ditetapkan oleh <tt>DataType</tt> seperti didaftarkan sebagai berikut,
80
</p>
81
<ul id="u3" class="block-content">
82
<li><tt>String</tt> - Tipe data string.</li>
83
<li><tt>Integer</tt> - Tipe data integer signed 32-bit.</li>
84
<li><tt>Float</tt> - Tipe data pecahan presisi-ganda.</li>
85
<li><tt>Date</tt> - Tipe data tanggal. Format tanggal dapat ditetapkan dengan menyeting properti <tt>DateFormat</tt>, yang harus dikenal oleh <tt>TSimpleDateFormatter</tt>. Jika properti tidak disetel, sintaks tanggal GNU diasumsikan.</li>
86
</ul>
87
<p id="560347" class="block-content">
88
Catatan, jika input yang sedang divalidasi kosong, TEmailAddressValidator tidak akan melakukan validasi. Gunakan TRequiredFieldValidator untuk memastikan nilai tidak kosong.
89
</p>
90
<p id="560348" class="block-content">
91
<b>N.B.</b> Jika memvalidasi terhadap <a href="?page=Controls.DatePicker">TDatePicker</a> properti <tt>DataType</tt> harus sama dengan "Date" dan properti <tt>DateFormat</tt> pada validator harus sama dengan <tt>DateFormat</tt> pada <a href="?page=Controls.DatePicker">TDatePicker</a>.
92
</p>
93
<com:RunBar PagePath="Controls.Samples.TCompareValidator.Home" />
94
 
95
<a name="TDataTypeValidator"></a>
96
<h2 id="4905">TDataTypeValidator</h2>
97
<p id="560349" class="block-content">
98
TDataTypeValidator memverifiksai apakah data input adalah tipe spesifik sepeti ditunjukan oleh <tt>DataType</tt>. Tipe data dapat diperiksa kembali apakah sama seperti yang ada dalam TCompareValidator.
99
</p>
100
<p id="560350" class="block-content">
101
<b>N.B.</b> Jika memvalidasi terhadap <a href="?page=Controls.DatePicker">TDatePicker</a> properti <tt>DataType</tt> harus sama dengan "Date" dan properti <tt>DateFormat</tt> pada validator harus sama dengan <tt>DateFormat</tt> pada <a href="?page=Controls.DatePicker">TDatePicker</a>.
102
</p>
103
 
104
 
105
<com:RunBar PagePath="Controls.Samples.TDataTypeValidator.Home" />
106
 
107
<a name="TRangeValidator"></a>
108
<h2 id="4906">TRangeValidator</h2>
109
<p id="560351" class="block-content">
110
TRangeValidator memverifikasi apakah nilai input di dalam jangkauan yang ditetapkan. TRangeValidator menggunakan properti kunci untuk melakukan validasinya. Properti <tt>MinValue</tt> dan properti <tt>MaxValue</tt> menetapkan nilai minimum dan maksimum dari jangkauan yang benar. Properti <tt>DataType</tt> 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.
111
</p>
112
 
113
<p id="range_strict" class="block-content">
114
Jika properti <tt>StrictComparison</tt> disetel ke <tt>true</tt>, maka jangkauan dibandingkan semata-mata kurang dari <tt>MaxValue</tt> dan/atau lebih besar dari <tt>MinValue</tt>.
115
</p>
116
 
117
<p id="560352" class="block-content">
118
<b>N.B.</b> Jika memvalidasi terhadap <a href="?page=Controls.DatePicker">TDatePicker</a> properti <tt>DataType</tt> harus sama dengan "Date" dan properti <tt>DateFormat</tt> pada validator harus sama dengan <tt>DateFormat</tt> pada <a href="?page=Controls.DatePicker">TDatePicker</a>.
119
</p>
120
 
121
<com:RunBar PagePath="Controls.Samples.TRangeValidator.Home" />
122
 
123
<a name="TCustomValidator"></a>
124
<h2 id="4907">TCustomValidator</h2>
125
<p id="560353" class="block-content">
126
TCustomValidator melakukan validasi didefinisikan-pengguna (baik sisi-server atau sisi-klien ataupun keduanya) pada kontrol input.
127
</p>
128
<p id="560354" class="block-content">
129
Untuk membuat fungsi validasii sisi-server, sediakan pengendali untuk event <tt>OnServerValidate</tt> yang melakukan validasi. String data pada kontrol input untuk memvalidasi dapat diakses dengan parameter event properti <tt>Value</tt>. Hasil validasi harus disimpan dalam properti <tt>IsValid</tt> pada parameter.
130
</p>
131
<p id="560355" class="block-content">
132
Untuk membuat fungsi validasi sisi-klien, tambahkan fungsi validasi javascript ke template halaman dan tempatkan namanya ke properti <tt>ClientValidationFunction</tt>. Fungsi harus memiliki tanda sebagai berikut:
133
</p>
134
<com:TTextHighlighter Language="javascript" CssClass="source block-content" id="code_560118">
135
<script type="text/javascript">
136
function ValidationFunctionName(sender, parameter)
137
{
138
    // if(parameter == ...)
139
    //    return true;
140
    // else
141
    //    return false;
142
}
143
</script>
144
</com:TTextHighlighter>
145
<com:RunBar PagePath="Controls.Samples.TCustomValidator.Home" />
146
 
147
<a name="TValidationSummary"></a>
148
<h2 id="4908">TValidationSummary</h2>
149
<p id="560356" class="block-content">
150
TValidationSummary menampilkan ringkasan dari kesalahan inline validasi pada halaman Web, dalam kotak pesan, atau keduanya.
151
</p>
152
<p id="560357" class="block-content">
153
Standarnya ringkasan validasi akan mengumpulkan <tt>ErrorMessage</tt> dari semua validator yang gagal pada halaman. Jika <tt>ValidationGroup</tt> tidak kosong, hanya validator itu yang dimiliki grup akan menampilkan pesan kesaslahannya dalam ringkasan.
154
</p>
155
<p id="560358" class="block-content">
156
Ringkasan dapat ditampilkan sebagai daftar, daftar bertitik, atau satu paragraf berdasarkan properti <tt>DisplayMode</tt>. Pesan yang ditampilkan dapat diawali dengan <tt>HeaderText</tt>. Ringkasan dapat ditampilkan pada halaman Web atau kotak pesan JavaScript, masing-masing dengan menyetel properti <tt>ShowSummary</tt> dan <tt>ShowMessageBox</tt>. Catatan, yang terakhir hanya efektif saat <tt>EnableClientScript</tt> adalah true.
157
</p>
158
<com:RunBar PagePath="Controls.Samples.TValidationSummary.Home" />
159
 
160
<h1 id="123123">Berinteraksi dengan Validator</h1>
161
<h2 id="116009">Mereset atau Membersihkan Validator</h2>
162
<p id="1212323">
163
Validator bisa mereset pada sisi-klien menggunakan javascript dengan memanggil
164
<tt>Prado.Validation.reset(groupID)</tt> di mana <tt>groupID</tt> adalah nama pengelompokan. Jika <tt>groupID</tt> adalah null, maka validator tanpa pengelompokan yang dipakai.
165
</p>
166
 
167
<com:TTextHighlighter Language="javascript" CssClass="source block-content" id="code_560118a">
168
<script type="text/javascript">
169
function reset_validator()
170
{
171
    Prado.Validation.reset("group1");
172
}
173
</script>
174
</com:TTextHighlighter>
175
<com:RunBar PagePath="Controls.Samples.ResetValidation.Home" />
176
 
177
<h2 id="5301">Validasi Kondisional Sisi Server dan Klien</h2>
178
<p id="560359" class="block-content">
179
	Semua validator berisi event berikut.
180
	Event terkait untuk sisi klien tersedia sebagai sub-properti
181
	dari properti <tt>ClientSide</tt> pada validator.
182
</p>
183
	<ul id="u4" class="block-content">
184
		<li>Event <tt>OnValidate</tt> muncul sebelum fungsi validasi validator yang dipanggil.</li>
185
		<li>Event <tt>OnValidationSuccess</tt> muncul setelah validator sukses memvalidasi kontrol.</li>
186
		<li>Event <tt>OnValidationError</tt> muncul setelah validator gagal memvalidasi.</li>
187
	</ul>
188
 
189
<div class="note"><b class="tip">Catatan:</b>
190
Untuk Prado sebelum versi 3.1 nama properti adalah <tt>OnError</tt> dan <tt>OnSuccess</tt>. Untuk Prado versi 3.1 dan berikutnya masing-masing <tt>OnValidationError</tt> dan <tt>OnValidationSuccess</tt>.
191
</div>
192
 
193
<p id="560360" class="block-content">Contoh berikut memunculkan pesan yang mengatakan "hello" saat validator gagal pada sisi-klien.
194
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_560119">
195
&lt;com:TRequiredFieldValidator ... &gt;
196
	&lt;prop:ClientSide.OnValidationError&gt;
197
		alert("hello");
198
	&lt;/prop:ClientSide.OnValidationError&gt;
199
&lt;/com:TRequiredFieldValidator&gt;
200
</com:TTextHighlighter>
201
Hasil event fungsi callback sisi-klien adalah dalam bentuk seperti berikut.
202
<com:TTextHighlighter Language="javascript" CssClass="source block-content" id="code_560120">
203
function onErrorHandler(sender, parameter)
204
{
205
	alert("hello");
206
}
207
</com:TTextHighlighter>
208
di mana <tt>sender</tt> adalah vaidator sisi-klien saat ini dan <tt>parameter</tt> adalah kontrol yang memanggil validator.
209
</p>
210
<h3 id="5302">Contoh Validasi Kondisional</h3>
211
<p id="560361" class="block-content">
212
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).
213
<com:RunBar PagePath="Controls.Samples.TClientSideValidator.Home" />
214
</p>
215
 
216
<div class="last-modified">$Id: Validation.page 1902 2007-05-07 04:17:37Z wei $</div></com:TContent>