Membuat Custom Rule Validator untuk Nomor Telepon Indonesia dengan Laravel
Pada tutorial ini, kita akan membuat sebuah custom rule validator di 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.
Abd. Asis
Penulis dari artikel ini.
Artikel yang Terkait
- Belajar Cache Flexible di Laravel
Irsyad A. Panjaitan
- Membuat Fitur Multi Bahasa di Laravel Inertia React
Irsyad A. Panjaitan
- Laravel Script: composer run dev
Irsyad A. Panjaitan
- Apa yang Baru di Inertia.js 2.0
Irsyad A. Panjaitan
- Like System dengan Laravel Polymorphic
Irsyad A. Panjaitan
- Laravel Dengan Multi Koneksi Database: Panduan Langkah demi Langkah
Abd. Asis
- Membuat Kode Laravel Lebih Bersih: Memindahkan Kode dari Controller
Abd. Asis