Forms & validation.
Form native tetap bekerja; JavaScript hanya enhancement.
Form dengan CSRF
Contoh endpoint /playground sudah tersedia. Untuk aplikasi sendiri tambahkan route POST dan validasi server.
<form method="post" action="<?= e(url('/playground')) ?>">
<?= csrf_field() ?>
<?= component('input', ['name'=>'name', 'label'=>'Name', 'required'=>true]) ?>
<?= component('input', ['name'=>'email', 'label'=>'Email', 'type'=>'email']) ?>
<?= component('button', ['label'=>'Send', 'type'=>'submit']) ?>
</form>Validasi server
Validator hanya memvalidasi field yang Anda deklarasikan. min dan max mengukur byte, bukan jumlah karakter Unicode. Validasi tidak menyimpan atau membersihkan data secara otomatis.
$errors = DL\Validator::errors($request->input, [
'name' => 'required|max:80',
'email' => 'required|email|max:190',
'age' => 'integer',
]);
if ($errors) return DL\Response::json(['errors'=>$errors], 422);Aturan yang tersedia
required, email, min:N, max:N dan integer. Input array untuk field scalar ditolak. Range angka, tanggal, uniqueness dan otorisasi membutuhkan validasi aplikasi tambahan.
Fetch enhancement
Tambahkan data-dl-form pada form POST dan sebuah elemen data-dl-result. Handler harus mengembalikan JSON errors dan message ketika Accept meminta JSON. Contoh lengkap ada di views/playground.php.
<div data-dl-result role="status" aria-live="polite"></div>Token dan kegagalan
Token yang hilang atau tidak cocok menghasilkan 419. Untuk request JSON kirim X-CSRF-Token dari session yang sama. Jangan menaruh token di URL. Setelah login, ambil form baru karena token berputar.