Kamis, 08 August 2024

Membuat Custom Rule Validator untuk Nomor Telepon Indonesia dengan Laravel

Pada tutorial ini, kita akan membuat sebuah custom rule validator di Laravel

Laravel

Pada tutorial ini, kita akan membuat sebuah custom rule validator di Laravel untuk memvalidasi nomor telepon dengan format spesifik yang umum digunakan di Indonesia, yaitu 628xxxxxxxxxx. Langkah-langkahnya sebagai berikut:

Membuat Custom Rule Validator

Buat sebuah class baru untuk custom rule validator menggunakan perintah artisan Laravel:

php artisan make:rule IndonesianPhoneNumber

Perintah ini akan membuat file IndonesianPhoneNumber.php di dalam direktori app/Rules.

Buka file app/Rules/IndonesianPhoneNumber.php dan definisikan custom rule validator sebagai berikut:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class IndonesianPhoneNumber implements Rule
{
    public function passes($attribute, $value)
    {
        // Validasi format nomor telepon Indonesia
        return preg_match('/^628[0-9]{8,12}$/', $value);
    }

    public function message()
    {
        return 'Format nomor telepon tidak valid. Harap gunakan format 628xxxxxxxxxx.';
    }
}

passes($attribute, $value): Metode ini akan memvalidasi nilai $value berdasarkan aturan yang telah ditentukan dalam regex '/^628[0-9]{8,12}$/'. Jika nilai sesuai dengan pola, validasi akan berhasil.

message(): Metode ini mengembalikan pesan error yang akan ditampilkan jika validasi tidak berhasil.

Custom Rule Validator dalam Request Form

Buat atau buka file request form di Laravel, misalnya app/Http/Requests/PhoneNumberRequest.php. Terapkan custom rule validator ke dalam rules request form:

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use App\Rules\IndonesianPhoneNumber;

class PhoneNumberRequest extends FormRequest
{
    public function rules()
    {
        return [
            'phone_number' => ['required', 'string', 'max:15', new IndonesianPhoneNumber]
        ];
    }

    public function messages()
    {
        return [
            'phone_number.required' => 'Nomor telepon harus diisi.',
            'phone_number.string' => 'Nomor telepon harus berupa teks.',
            'phone_number.max' => 'Nomor telepon tidak boleh lebih dari 15 karakter.',
            'phone_number.phone_number' => 'Format nomor telepon tidak valid. Harap gunakan format 628xxxxxxxxxx.'
        ];
    }
}

new IndonesianPhoneNumber akan memanggil custom rule validator IndonesianPhoneNumber yang telah kita buat sebelumnya.

Menggunakan dalam Controller

Gunakan request form yang telah dibuat dalam controller untuk melakukan validasi:

namespace App\Http\Controllers;

use App\Http\Requests\PhoneNumberRequest;

class PhoneController extends Controller
{
    public function store(PhoneNumberRequest $request)
    {
        $validatedData = $request->validated();

        // Proses selanjutnya setelah validasi sukses

        return response()->json([
            'message' => 'Nomor telepon berhasil divalidasi dan disimpan.'
        ]);
    }
}

$request->validated() akan mengambil data yang telah divalidasi dari request form.

Kesimpulan

Dengan langkah-langkah di atas, Kamu telah membuat sebuah custom rule validator di Laravel untuk memvalidasi nomor telepon dengan format 628xxxxxxxxxx yang umum digunakan di Indonesia.

Hal ini membantu memastikan data yang diinputkan pengguna sesuai dengan format yang diinginkan, meningkatkan kualitas dan konsistensi aplikasi Kamu. Pastikan untuk menyesuaikan pesan error dan aturan validasi sesuai kebutuhan aplikasi Kamu.