Membuat Modifikasi Rule Validator untuk Nomor Telepon Indonesia dengan 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
php artisan make:rule IndonesianPhoneNumber
// /.vscode/settings.json
{
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 '/^6280-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.'
];
}
}
Menggunakan dalam Controller
$request->validated() akan mengambil data yang telah divalidasi dari request form.