Ruang penulis
← Kembali ke jurnal
Laravel

Memisahkan Validasi Artikel Laravel ke Form Request

Rapikan controller dengan aturan validasi dan pemeriksaan akses pada Form Request khusus.

DAdministrator · 20 Sep 2026 · 2 menit baca

Controller penyimpanan artikel akan sulit dibaca ketika aturan validasi bercampur dengan banyak proses lain. Form Request menyediakan tempat khusus untuk mendefinisikan data yang boleh diterima dan siapa yang boleh mengirimkannya.

Contoh ini untuk aplikasi Laravel dengan model Post, kolom title dan body, serta pengguna yang memiliki atribut is_admin. Buat kelas melalui php artisan make:request StoreArticleRequest, kemudian isi metode berikut pada kelas hasil generator.

Contoh implementasi

public function authorize(): bool
{
    return $this->user()?->is_admin === true;
}

public function rules(): array
{
    return [
        'title' => ['required', 'string', 'max:200'],
        'body' => ['required', 'string', 'max:50000'],
    ];
}
// In ArticleController:
public function store(\App\Http\Requests\StoreArticleRequest $request)
{
    $data = $request->validated();
    $post = new \App\Models\Post;
    $post->title = $data['title'];
    $post->body = $data['body'];
    $post->user_id = $request->user()->id;
    // Fill any other required columns in your application's schema.
    $post->save();

    return response()->json(['id' => $post->id], 201);
}

Periksa batas akses dan data

Hubungkan controller ke route dengan middleware auth. Pastikan model User melakukan cast is_admin ke boolean. Kirim judul kosong sebagai admin dan pastikan validasi gagal; kirim data lengkap sebagai pengguna biasa dan pastikan akses ditolak.

Pakai validated() agar field tambahan tidak ikut diproses. Jika tabel Anda mewajibkan slug, kategori, atau ringkasan, lengkapi aturan dan pengisiannya sebelum menjalankan contoh. Untuk aplikasi dengan peran lebih kompleks, ganti pemeriksaan admin dengan policy yang sesuai.

Referensi

Dokumentasi resmi

← Jelajahi catatan lainnya