Skip to content
DOCUMENTATION / BACKEND

Forms & validation.

Form native tetap bekerja; JavaScript hanya enhancement.

PHP 8.2+No buildDL 0.2 alpha

Form dengan CSRF

Contoh endpoint /playground sudah tersedia. Untuk aplikasi sendiri tambahkan route POST dan validasi server.

PHP view
<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.

PHP
$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.

HTML
<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.

Icons: Solar by 480 Design (CC BY 4.0) & Iconsax (MIT). PHP UI adapted from Coordiation. Logo: DesignLof.