Laravel Form Request


Rafi Taufiqurrahman
A Backend Developer specialized in Laravel
Laravel Form Request

Pada artikel kali ini kita akan mencoba menggunakan FormRequest untuk melakukan validasi request kita, laravel sendiri menyediakan berbagai validasi request namun kali ini kita akan mencoba menggunakan FormRequest kenapa FormRequest ? menurut saya sendiri FormRequest sangat baik digunakan agar controller yang kita miliki menjadi lebih clean.

Catatan : Laravel sendiri memiliki berbagai macam cara dalam melakukan validasi input, dan semua validasi yang disediakan oleh Laravel dapat berjalan dengan baik namun saya sendiri memilih menggunakan FormRequest di karenakan penulisan validasi input kita diletakan pada file yg terpisah di luar controller yang kita miliki sehingga controller yang kita miliki menjadi lebih clean

Oke tanpa berlama - lama langsung aja kita coba menggunakan FormRequest, tapi pertama - tama kita akan mencoba melakukan validasi request tanpa menggunakan FormRequest .

<?php

namespace App\Http\Controllers;

use App\Models\Customer;
use Illuminate\Http\Request;

class CustomerController extends Controller
{
    Public function store(Request $request)
    {
      $this->validate($request,[
        'name' => 'required',
        'email' => 'required|unique:customers',
        'address' => 'required'
      ]);

      Customer::create([
        'name' => $request->name,
        'email' => $request->email,
        'address' => $request->address
      ]);
    }
}

Pada kode diatas merupakan contoh senderhana dalam melakuan validasi request sebanyak 3 field yang kita miliki, lalu bagaimana jika kita memiliki jumlah field yang lebih banyak ? hal itu pasti akan memakan banyak sekali ruang pada controller yang kita miliki, sehingga syntax yang kita punya tidak terlihat rapih. Oleh karena itu saya memilih FormRequest sebagai validasi request.

Sekarang kita akan mencoba membuat sebuah FormRequest , caranya dengan mengetikan php artisan make:request CustomerRequest pada terminal / CMD yang kalian gunakan pada project laravel kita.

Setelah berhasil menjalankan perintah di atas kita akan mendapatkan sebuah file baru yang terletak pada "App\Http\Request\CustomerRequest.php"

CustomerRequest

secara default, terdapat 2 method pada class hasil generate perintah artisan diatas, yaituauthorize() dan rules()

CustomerRequest

Method Authorize

Method authorize digunakan untuk memastikan bahwa user dibolehkan untuk membuat request. Nilai dari method authorize ini harus mengembalikan nilai true agar user dapat melanjutkan ke proses validasi.

public function authorize()
{
    return true;
}

Syntax di atas pada method authorize kita ubah yang awalanya bernilai false kita ubah menjadi true agar FormRequest dapat digunakan.

Method Rules

Method rules digunakan untuk mendefinisikan semua validasi yang akan kita gunakan untuk memvalidasi sebuah request dari pengguna.

public function rules()
{
  return [
    'name' => 'required',
    'email' => 'required|unique:customers',
    'address' => 'required',
  ];
}

Syntax diatas kita gunakan untuk melakukan validasi seperti biasa hanya saja kita melakukannya di App\Http\Request\CustomerRequest.php

Lalu bagaimana cara menggunakan FormRequest tersebut pada controller kita ? itu sangat mudah sekali, berikut contoh kode penggunaan FormRequest pada controller :

<?php

namespace App\Http\Controllers;

use App\Models\Customer;
use App\Http\Requests\CustomerRequest;

class CustomerController extends Controller
{
    Public function store(CustomerRequest $request)
    {
      Customer::create($request->all());
    } 
}

Pada method store diatas kita hanya perlu menambahkan CustomerRequest dan kemudian mengimport file tersebut dari use App\Http\Requests\CustomerRequest dan validasi request berhasil kita gunakan, terlihat sekarang controller kita menjadi lebih bersih dan menyisakan hanya 1 baris syntax

Oke sampai disini dulu ya artikel kali ini, kita ketemu lagi di next artikel ya, kalo ada pertanyaan silahkan cantumkan di kolom komentar :D

Terima kasih.


Rafi Taufiqurrahman
A Backend Developer specialized in Laravel

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami