Ověřování telefonních čísel v systému Laravel
Ověřování telefonních čísel je v moderních aplikacích běžným požadavkem. Čistá a přesná telefonní data zajišťují spolehlivou komunikaci, správné ověření identity uživatele a konzistentní formátování databáze. Laravel poskytuje flexibilní nástroje pro validaci jednoduchých i složitých formátů telefonních čísel prostřednictvím vestavěných pravidel, regexů, vlastních pravidel a knihoven třetích stran.
Základní ověřování telefonních čísel pomocí vestavěných pravidel
Použití požadovaných a číselných pravidel
Pro základní číselné zadávání v telefonu:
$request->validate([ 'phone' => ['required', 'numeric'],]);
Tím se zajistí, že hodnota bude obsahovat pouze číslice. Je to užitečné pro místní formáty bez symbolů nebo kódů zemí.
Použití regexu pro jednoduché vzory
Regex umožňuje základní vynucení struktury. Například desetimístné místní číslo:
$request->validate([ 'phone' => ['required', 'regex:/^[0-9]{10}$/'],]);
Osvědčené postupy při používání regexů
- Vzorky musí být minimální a čitelné.
- Vyhněte se příliš přísným vzorům, které odmítají platné formáty z reálného světa.
- správně ukončete znaky, abyste se vyhnuli nechtěným shodám.
Ověřování mezinárodních telefonních čísel
Porozumění formátování E.164
E.164 je globální standard pro telefonní čísla. Vyžaduje úvodní znaménko plus následované až patnácti číslicemi. Příklad: +15551234567.
Regex pro E.164 ve validaci Laravel
Spolehlivý vzor E.164:
$request->validate([ 'phone' => ['required', 'regex:/^\+[1-9][0-9]{1,14}$/'],]);
Vysvětlení:
- Hodnota musí začínat znaménkem plus.
- První číslice nesmí být nula.
- Číslo může obsahovat až patnáct číslic.
Obvyklá úskalí
- Povolení mezer nebo interpunkčních znamének při použití E.164.
- Přijímá kódy zemí začínající nulou.
- Zapomenutí ukotvení vzoru regex na začátku a na konci řetězce.
Použití vlastních pravidel ověřování
Vytvoření vlastního pravidla
Generování třídy pravidel:
php artisan make:rule PhoneNumber
Implementace průchodů a zpráv
Příklad pravidla prosazujícího E.164:
namespace App\Rules; use Illuminate\Contracts\Validation\Rule; class PhoneNumber implements Rule{ public function passes($attribute, $value) { return preg_match('/^\+[1-9][0-9]{1,14}$/', $value) === 1; } public function message() { return 'The :attribute field must be a valid phone number.'; }}
Použití vlastního pravidla uvnitř formuláře Požadavky
public function rules(){ return [ 'phone' => [new \App\Rules\PhoneNumber], ];}
Tím se zapouzdří logika ověřování a řadiče zůstanou čisté.
Ověřování telefonních čísel v požadavcích na formuláře
Centralizace logiky ověřování
Formulář Žádosti poskytuje vyhrazené místo pro ověřování. Zlepšují udržovatelnost a podporují vlastní zprávy, autorizaci a opakovaně použitelná pravidla.
Příklad FormRequest s pravidly pro telefonování
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreUserRequest extends FormRequest{ public function rules() { return [ 'phone' => ['required', 'regex:/^\+[1-9][0-9]{1,14}$/'], ]; }}
Vlastní zprávy a pojmenování atributů
public function messages(){ return [ 'phone.regex' => 'Enter a valid E.164 phone number.', ];} public function attributes(){ return [ 'phone' => 'phone number', ];}
Použití knihoven třetích stran pro pokročilé ověřování
Kdy použít knihovnu
Pokud potřebujete specifické formátování, parsování, normalizaci nebo validaci nad rámec jednoduchého regexu, použijte knihovnu. To je užitečné při podpoře více regionů.
Příklad použití balíčku propaganistas/laravel-phone
Nainstalujte balíček:
composer require propaganistas/laravel-phone
Ověření telefonního čísla pro určitou zemi:
$request->validate([ 'phone' => ['required', 'phone:US'],]);
Ověření mezinárodního telefonního čísla:
$request->validate([ 'phone' => ['required', 'phone:INTERNATIONAL'],]);
Ověřte více možných zemí:
$request->validate([ 'phone' => ['required', 'phone:US,CA'],]);
Souhrn
Laravel nabízí výkonné možnosti validace telefonních čísel od jednoduché kontroly číslic až po pokročilou mezinárodní validaci. Vývojáři mohou používat vestavěná pravidla pro jednoduché případy, regex pro strukturované formáty, vlastní pravidla pro složitou logiku a externí knihovny pro globální přesnost. Tyto nástroje umožňují aplikacím shromažďovat čistá, konzistentní a spolehlivá telefonní data v různých oblastech a případech použití.