nette forms maxLength validacia

spown
Člen | 3
+
0
-

zdravim, da sa nejako jednoducho bez nutnosti vytvarat vlastne formularove prvky urobit to, ze textarea bude mat validacne pravidlo na maxlength

addRule($form::MaxLength, 'Max povolena delka nadpisu je %d znakov', News::MAX_HEADLINE_LENGTH)

ale zaroven sa nebude renderovat do html atribut maxlength?

dakujem

David Grudl
Nette Core | 8149
+
0
-

Proc?

kminekmatej
Generous Backer | 34
+
0
-

Myslím se že nedá a ani nedává smysl. Ten MaxLength je vyrobený přesně k tomuhle. Dovedu si představit nějaké řešení na úrovni Javascriptu které to bude omezovat, nicméně bylo by to drbání pravou rukou za levym uchem

spown
Člen | 3
+
0
-

dovod je taky, ze uzivatel najcastejsie do danej textarea kopiruje texty a je neziaduce aby mu dany text orezavalo do XY znakov > potrebujem mu umoznit tam vlozit aj dlhsi text ako je nastavena validacia maxlength a nasledne az po odoslani formularu v pripade prekrocenia danej dlzky mu vyhodit chybu

a pride mi skarede riesenie posielat do setMaxLength nejaku bulharsku konstantu…

$form->addTextArea('headline', 'Nadpis')->setMaxLength(99999)

Editoval spown (16. 11. 2023 10:25)

Lumeriol
Generous Backer | 59
+
+5
-

spown napsal(a):

dovod je taky, ze uzivatel najcastejsie do danej textarea kopiruje texty a je neziaduce aby mu dany text orezavalo do XY znakov > potrebujem mu umoznit tam vlozit aj dlhsi text ako je nastavena validacia maxlength a nasledne az po odoslani formularu v pripade prekrocenia danej dlzky mu vyhodit chybu

a pride mi skarede riesenie posielat do setMaxLength nejaku bulharsku konstantu…

$form->addTextArea('headline', 'Nadpis')->setMaxLength(99999)

V tom případě nedávej validaci do formulářového prvku, ale použij $form->onValidate[], která ti provede validaci po submitu a vyhodí případnou chybu, ale nezpracuje/neuloží ti ten formulář.
V onValidate si můžeš spočítat počet znaků a vyhodit informaci o tom, že je to moc dlouhé skrze $form->addError().

Více informací najdeš tady.

Editoval Lumeriol (16. 11. 2023 12:41)

David Grudl
Nette Core | 8149
+
+3
-

Na straně Nette nic neměň a dopln JS zvýrazňovač limitu, jako má třeba Twitter, který zároveň odstraní ten atribut.

spown
Člen | 3
+
0
-

vdaka za nakopnutie spravnym smerom, obe riesenia zneju rozumne