Formulář – ošetření addText pouze na text

Dvory59
Člen | 40
+
0
-

Ahoj. Prosím o radu. Mám ve formuláři addText, ve kterém bych potřeboval nastavit ošetření vstupu pouze na text. Zabránit zadání čísel… Hledal jsem v dokumentaci co by k tomu mohlo sloužit a našel jsem pravidla, které vrací jestli je obsaženo číslo.

$form->addText('name', "Name")
				->addRule(Form::FLOAT,'Form name can not contain number.')
				->setRequired("Please put name");

Ale tento zápis mi hlásí, že je obsaženo číslo ať zadám cokoliv a formulář nejde odeslat.
Můžu poprosit o radu?
Díky moc.

Ondřej Kubíček
Člen | 494
+
0
-

tak použij Form::PATTERN

->addRule(Form::PATTERN, 'Nesmí obsahovat číslice', '.*[a-zA-Z].*')
Dvory59
Člen | 40
+
0
-

@OndřejKubíček Tohle je dobrý, ale funguje to jen když zadám čísla. Když už zadám i jedno písmenko, tak to projde. Dá se nějak v regulárech napsat aby to fungovalo vždycky? Já s nima nejsem moc kamarád :/

nightfish
Člen | 470
+
0
-

@Dvory59 Zkus

->addRule(Form::PATTERN, 'Nesmí obsahovat číslice', '^[^\d]$')

EDIT:
@CZechBoY má pravdu, správně by to mělo být takto:

->addRule(Form::PATTERN, 'Nesmí obsahovat číslice', '^[^\d]*$')

S tím, že ten regulár povolí i prázdný řetězec – vynucení neprázdnosti bych pak dělal přes setRequired().

Editoval nightfish (7. 12. 2018 10:49)

Ondřej Kubíček
Člen | 494
+
0
-

@Dvory59 a-zA-Z jak tohle funguje jen když zadáš čísla? :D

CZechBoY
Člen | 3608
+
+3
-

@OndřejKubíček Myslel asi, že to je funguje jak by očekával (vyhodí to validační chybovou hlášku) pokud jsou v inputu pouze čísla. Tvůj regulář projde pokud se v řetězci nachází alespoň jedno písmeno a-z nebo A-Z.

@nightfish Ten regulár by se dal zjednodušit na

->addRule(Form::PATTERN, 'Nesmí obsahovat číslice', '^\D+$')

při psaní jsem si uvědomil, že tvůj regulár by povolil pouze jedno písmeno

https://regex101.com/r/aX7OVV/1

Ondřej Kubíček
Člen | 494
+
0
-

@CZechBoY ahá :) jo tvoje řešení je nejlepší