Home Web Laravel Laravel Form Request: Bikin Validasi Lebih Optimal

Laravel Form Request: Bikin Validasi Lebih Optimal

0
Laravel Form Request: Bikin Validasi Lebih Optimal

Pengenalan

Validasi input adalah aspek penting yang perlu diperhatikan dalam setiap pengembangan aplikasi/web untuk memastikan data yang masuk sesuai dengan aturan yang telah ditetapkan. Pada Laravel ada beberapa cara untuk melakukan validasi, seperti:

  1. Validasi di Controller: Aturan validasi ditulis langsung dalam metode controller.
  2. Validasi Manual: Membuat instance validator secara manual menggunakan Facades\Validator -> Validator::make() yang menghasilkan instance validator baru.
  3. Form Request Validation – Aturan validasi dikelola dalam kelas terpisah yang disebut Form Request.

Dari semua metode, Form Request menjadi pilihan yang lebih optimal untuk aplikasi yang besar dan kompleks, karena memisahkan logika validasi dari logika bisnis aplikasi.

Apa Itu Form Request di Laravel?

Form Request di Laravel adalah kelas khusus yang digunakan untuk menangani validasi input dari request. Dengan memanfaatkan Form Request, kita dapat mengelola aturan validasi secara lebih bersih dan terorganisir, terpisah dari controller. Selain itu, Form Request juga mendukung otorisasi, yang memungkinkan kita untuk menentukan apakah pengguna memiliki hak akses untuk membuat permintaan tersebut.

Keuntungan Menggunakan Form Request

Menggunakan Form Request untuk validasi data dalam Laravel memiliki beberapa keunggulan:

  1. Keterbacaan Kode yang Lebih Baik
    Dengan memindahkan logika validasi ke kelas khusus, controller menjadi lebih bersih dan mudah dipahami. Kita tidak perlu menulis kode validasi panjang di dalam controller.
  2. Penggunaan Ulang (Reuse)
    Aturan validasi yang didefinisikan dalam Form Request dapat digunakan di beberapa tempat, sehingga mengurangi pengulangan kode.
  3. Dukungan Otorisasi
    Selain validasi, Form Request memungkinkan kita menambahkan otorisasi melalui metode authorize(), yang sangat berguna untuk membatasi akses berdasarkan peran atau hak pengguna.
  4. Lebih Mudah Diuji (Testing)
    Memisahkan validasi ke dalam Form Request memudahkan pengujian unit pada aturan validasi, terpisah dari logika controller.
  5. Standar Validasi yang Konsisten
    Dengan menggunakan Form Request di seluruh aplikasi, kita dapat menjaga standar validasi yang konsisten dan mudah dipahami oleh tim pengembang.

Cara Membuat dan Menggunakan Form Request

Berikut adalah langkah-langkah untuk membuat dan menggunakan Form Request di Laravel.

1. Membuat Form Request

Untuk membuat Form Request, jalankan perintah Artisan berikut:

php artisan make:request StorePostRequest

Kelas Form Request akan dibuat dan ditempatkan di direktori app/Http/Requests. Jika direktori ini tidak ada, maka akan dibuat ketika kita menjalankan perintah make:request

2. Membuat Rules Validasi

Di dalam kelas StorePostRequest, kita dapat mendefinisikan aturan validasi di metode rules():

public function rules(): array
{
    return [
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ];
}

3. Otorisasi di Form Request

Jika ada otorisasi yang diperlukan, kita bisa menambahkan logika otorisasi di metode authorize():

// hanya mengizinkan user yang sudah login
public function authorize(): bool
{
    return auth()->check();
}

Jika kita ingin mengizinkan semua request atau melakukan otorisasi pada bagian aplikasi lain, kita cukup mengembalikan nilai true :

public function authorize(): bool
{
    return true;
}

4. Custom Error Message

Kita dapat mengkustomisasi pesan kesalahan dengan meng-override metode messages():

public function messages(): array
{
    return [
        'title.required' => 'Field Title wajib di isi',
        'body.required' => 'Field Message wajib di isi',
    ];
}

5. Custom Atribut Validasi

Untuk mengganti placeholder :attribute pada pesan validasi dengan nama atribut khusus, kita dapat menggunakan metode attributes():

public function attributes(): array
{
    return [
        'email' => 'email address',
    ];
}

6. Menggunakan Form Request di Controller

Kita dapat menggunakan Form Request sebagai parameter pada metode controller yang memproses permintaan :

public function store(StorePostRequest $request)
{
    $validatedData = $request->validated();

    $post = Post::create($validatedData);

    return response()->json($post, 201); 
}

Kesimpulan

Form Request di Laravel adalah alat yang sangat berguna untuk menangani validasi input dengan cara yang terstruktur dan efisien. Dengan memisahkan logika validasi dari controller, kita meningkatkan keterbacaan kode dan memudahkan pemeliharaan aplikasi. Keunggulan seperti penggunaan ulang aturan validasi, dukungan otorisasi, dan kemudahan pengujian menjadikan Form Request pilihan ideal, terutama dalam aplikasi yang besar dan kompleks. Dengan mengimplementasikan Form Request, kita tidak hanya memastikan data yang masuk valid, tetapi juga menciptakan standar pengembangan yang lebih konsisten dan profesional.