1. Laravel
  2. PHP

Laravel Shared Validation Rules

This entry is part 2 of 5 in the series Clean Code Laravel

Tutorial ini masih berhubungan dengan penggunaan FormRequest untuk validasi yang telah kita bahas sebelumnya. Salah satu cara lain untuk membuat kode yang kita tulis lebih clean adalah dengan menerapkan shared validation rules pada FormRequest Laravel. Shared validation rules disini artinya kita akan memanfaatkan beberapa aturan validasi pada FormRequest yang telah kita buat untuk digunakan pada class FormRequest yang lain.

Dengan menerapkan cara ini pada FormRequest, kita tidak akan menulis kode yang sama pada tempat yang berbeda atau dalam bahasa programming lebih dikenal dengan DRY (don’t repeat yourself). Mari kita bahas salah satu contoh kasus untuk lebih memahami bagaimana memanfaatkan FormRequest untuk digunakan pada class lain untuk menghindari penulisan kode yang berulang.

Misalnya project yang kita buat memiliki fitur untuk pengguna mendaftar pada website yang kita buat. Pada form registrasi kita diharuskan memvalidasi input pengguna dengan aturan validasi sebagai berikut:

FieldValidasi
first_namerequired, string
last_namerequired, string
emailrequired, email, unique
phone_numberrequired, string

Dengan menggunakan FormRequest kita akan menuliskan aturan validasi diatas kurang lebih seperti ini.

class RegisterRequest extends FormRequest
{
    //

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'first_name'  => 'required|string',
            'last_name'  => 'required|string',
            'email' => 'required|email|unique:users',
            'phone_number' => 'required|string'
        ];
    }
}

Sebagaimana website pada umumnya, ketika kita mengizinkan pengguna untuk mendaftar pada website yang kita buat, sudah umum bahwa kita juga menyediakan sebuah fitur untuk mengizinkan pengguna mengupdate data mereka setelah mendaftar. Untuk mengupdate data pengguna, kita harus menyediakan sebuah form baru dan memvalidasi input pengguna. Pada form ini kita akan menerapkan aturan validasi sebagai berikut:

FieldValidasi
first_namerequired, string
last_namerequired, string
emailrequired, email, unique
phone_numberrequired, string
addressrequired, string

Aturan validasi diatas terlihat hampir sama dengan validasi pada proses register yang telah kita bahas sebelumnya. Disinilah kita bisa menggunakan FormRequest pada proses register untuk digunakan kembali pada proses update data pengguna. Inilah yang saya katakan shared validation rules pada FormRequest Laravel. Dari pada menulis ulang aturan validasi, akan lebih baik untuk meng-extend class RegisterRequest pada class FormRequest yang akan kita buat untuk memvalidasi proses update.

class UpdateProfileRequest extends RegisterRequest
{
    //

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return array_merge(parent::rules(), [
            'email' => 'required|string|unique:users,id,'.$this->user()->id,
            'address' => 'required|string'
        ]);
    }
}

Pada contoh diatas terlihat bahwa kita menggunakan kode parent::rules() pada class FormRequest diatas, karena kita meng-extend class RegisterRequest pada class ini, maka kode parent::rules() akan mengambil nilai dari method rules() pada class RegisterRequest yang kemudian akan digabungkan dengan aturan validasi baru yang di deskripsikan pada class ini.

Note: Kita hanya perlu mendeskripsikan aturan validasi yang berbeda dengan class parent yang kita gunakan.

Series Navigation<< Laravel – Menggunakan FormRequest untuk validasiLaravel Route Model Binding >>
Comments to: Laravel Shared Validation Rules

    Your email address will not be published. Required fields are marked *

    Attach images - Only PNG, JPG, JPEG and GIF are supported.