Saat Anda memiliki kolom input untuk nomor telepon, mungkin terpikir untuk memvalidasinya sebagai angka desimal. Tapi sebenarnya, ini bukan ide yang baik. Mari kita bahas alasannya dan solusi yang lebih tepat.
Beberapa developer sering menggunakan aturan validasi seperti ini:
$rules = [
'phone' => 'numeric|digits:11',
];
Aturan ini mengasumsikan bahwa nomor telepon hanya berasal dari satu negara dengan panjang 11 digit, misalnya: 37011122222. Nomor ini valid, jadi menggunakan validasi numeric terlihat seperti keputusan yang masuk akal, bukan?
Namun, pendekatan ini hanya cocok dalam beberapa kasus tertentu saja.
Kenapa Validasi Nomor Telepon Sebagai Angka Desimal Bukan Ide Bagus?
-
Proyek dengan Pengguna Internasional:
Jika aplikasi Anda dirancang untuk pengguna dari berbagai negara, validasi numeric tidak akan cukup. Setiap negara memiliki format dan panjang nomor telepon yang berbeda, sehingga aturan ini menjadi tidak efektif.
-
Menerima Pengguna Asing atau Turis:
Bahkan jika aplikasi Anda hanya beroperasi di satu negara, apakah Anda tidak ingin mengizinkan turis atau pengguna asing untuk mendaftar dengan nomor telepon internasional? Validasi numeric mungkin akan menghalangi mereka.
-
Nomor Telepon dengan Angka "0" di Depan:
Bagaimana jika nomor telepon dimulai dengan angka "0"? Validasi numeric bisa menganggapnya sebagai angka desimal, yang mungkin menyebabkan angka "0" di awal terhapus dan membuat nomor tersebut tidak valid.
-
Format Nomor Telepon yang Beragam:
Bagaimana jika pengguna ingin memasukkan nomor telepon mereka dengan format yang berbeda, seperti menggunakan tanda hubung, spasi, atau simbol lainnya? Misalnya, nomor dari contoh di atas bisa ditulis seperti ini: (+370) 111 22222. Validasi numeric tidak akan bisa memproses format ini dengan benar.
Solusi yang Lebih Tepat: Menggunakan Laravel Phone Package
Ada banyak solusi untuk masalah ini, dan tidak ada aturan validasi yang benar-benar universal. Umumnya, validasi nomor telepon membutuhkan kombinasi solusi front-end dan back-end, dengan bantuan desainer untuk memastikan pengalaman pengguna yang optimal.
Namun, dari sisi back-end, salah satu solusi yang saya rekomendasikan adalah menggunakan package khusus.
Salah satu package yang populer untuk Laravel adalah Propaganistas/Laravel-Phone.
Dengan package ini, Anda bisa menggunakan aturan phone yang dapat dikonfigurasi sesuai kebutuhan.
return [
'phone' => "required|phone",
// Or even provide the country/countries:
'mobile_phone' => "required|phone:US,UK",
];
Jika validasi gagal, Anda akan mendapatkan pesan kesalahan yang lebih jelas seperti "Field
harus berupa nomor telepon yang valid."
Untuk opsi konfigurasi lainnya, Anda bisa merujuk ke dokumentasi resmi dari package ini.
Kesimpulan
Memvalidasi nomor telepon sebagai angka desimal memang terlihat sederhana, tapi bisa jadi tidak efektif, terutama untuk aplikasi yang melibatkan pengguna internasional atau format nomor telepon yang beragam. Menggunakan package seperti Propaganistas/Laravel-Phone adalah solusi yang lebih baik karena menawarkan fleksibilitas dan akurasi yang lebih tinggi dalam memvalidasi nomor telepon sesuai kebutuhan proyek Anda.
Comments