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:
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.
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.
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.
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.
Penulis dari artikel ini.