Formulář – ošetření addText pouze na text
- Dvory59
- Člen | 40
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
tak použij Form::PATTERN
->addRule(Form::PATTERN, 'Nesmí obsahovat číslice', '.*[a-zA-Z].*')
- nightfish
- Člen | 519
@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)
- CZechBoY
- Člen | 3608
@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