Memisahkan Validasi Artikel Laravel ke Form Request
Rapikan controller dengan aturan validasi dan pemeriksaan akses pada Form Request khusus.
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.
