Validace telefonního čísla

grovik
Člen | 54
+
0
-

Než to tu rozpitváme zeptám se jestli je nějaký aktuální funkční hotová věc na validaci telefonního čísla?

$form->addText('phone', 'Telefonní číslo:')

       ->addRule(Form::PATTERN, 'Telefonní číslo není platné', '^\+420\d{9}$');

        ->addRule(function ($control) {return Validators::isNumericInt($control->getValue()) && Validators::length($control->getValue(), 9, 9);}, 'Telefonní číslo není platné.');

       ->addRule(function ($control) {return preg_match('/^[1-9][0-9]{8}$/', str_replace([' ', '-', '/'], '', $control->getValue()));}, 'Telefonní číslo není platné.');

Zkoušel jsem zatím tohle.
Různé varianty regulárního výrazu. Ale výsledek je řekněme nejistý.

Pepino
Člen | 249
+
0
-

Chceš jen české čísla?

grovik
Člen | 54
+
0
-

Pepino napsal(a):

Chceš jen české čísla?

jj zatím řeším česká čísla. Ideální ohlídat si ty různé varianty (mezery atd.) Já si z toho pak udělám něco stejného protože pak tam řeším posílání SMS a tam potřebuju formát ujednotit.

Zdeno1981
Člen | 114
+
0
-

Koukni na tenhle doplněk, mohlo by ti to pomoct https://github.com/…number-input
Já ho používám v jednom projektu a funguje dobře.

grovik
Člen | 54
+
0
-

Zdeno1981 napsal(a):

Koukni na tenhle doplněk, mohlo by ti to pomoct https://github.com/…number-input
Já ho používám v jednom projektu a funguje dobře.

Na to jsem narazil, ale přes Composer se mi to nedaří nainstalovat (podle chyby to má problém s verzí Nette) a popravdě nechci to zkoušet a něco si rozdrbat…

Marek Bartoš
Nette Blogger | 1177
+
0
-

Ten doplněk používá brick/phonenumber, což je wrapper nad giggsey/libphonenumber-for-php. V PHP je to celkem jasná volba pro validaci čísel :)
Můžeš použít text input a formát kontrolovat v onValidate, custom input na to vůbec nepotřebuješ.