Problém s vlastnou validáciou formuláru
- pwnedko
- Člen | 24
Zdravím všetkých možno to bude nejaká naozaj banalita ale prezrel som už veľmi veľa topicov na fóre čo sa týka tejto problematiky ale nefunguje mi nič, skúšal som aj na IRC sa popýtať chalanov no nevedeli mi už ani oni pomôcť tak preto sa skúšam obratiť na fórum.
Mám problém s vlastnou validáciu formulára. Neviem prečo ale nech to robím či cez callback alebo cez t.z. anonymnú funkciu nič mi nefungovalo ani len nepridalo do HTML parametru data-nette-rules. Mám verziu nette 2.0.1. Na používam doplnok Live Form Validation for Nette 2.0 od užívateľa Radek Ježdík. Verziu PHP mám 5.3.
Môj presenter:
<?php
....
$form['oldPassword']->addRule(function ($control) {
return false;
}, 'Toto uživatelské jméno je již registrováno');
...
?>
return false; to si nevšímajte to je iba na skúšku no nefunguje to ani tak.
Skúšal som to aj takto:
<?php
....
$form['oldPassword']->addRule(callback($this, 'checkPass'), 'Toto uživatelské jméno je již registrováno');
public function checkPass($control){
return false;
}
...
?>
Žiadnu chybu to nikde nepíše ani na stránke, ani v logoch, ani po odoslaní formuláru len proste nevypíše ani nekontroluje danú podmienku proste ako keby tam nič nebolo to preskočí proste.
Vopred ďakujem za odpovede.
- jtousek
- Člen | 951
Jak by se callback mohl přidávat do data-nette-rules? Tahle validace se může provést až po odeslání formuláře na serveru, javascript tohle emulovat nemůže.
Leda by to šlo ajaxem, možná to umí tenhle addon.
- jtousek
- Člen | 951
pwnedko napsal(a):
Ďakujem za zbytočnú odpoveď, trošku skús si prečítať čo som napísal a jaký addon používam na validáciu.
Aj tak to jo. Omlouvám se, nepřečetl jsem si to pořádně.
Podíval jsem se na ten addon – je to pouze jeden javascriptový soubor, takže je zcela zřejmé, že se orientuje pouze tím, co je v data-nette-rules. Callbacky se v data-nette-rules samozřejmě neobjeví takže tento addon nemá žádnou možnost jak by se vůbec dověděl o existenci daného pravidla.
- ViPEr*CZ*
- Člen | 817
No jako addon to je dost složité, neboť to bude závislé na nějaké databázi. Já bych to dělal tak, že bych si normálně do submittu odeslal data a až pak bych v té metodě spracovávající odeslání formu ověřoval jméno uživatele, které bylo odesláno a addErrorem bych vložil chybu a neodeslal data do DB.
- ViPEr*CZ*
- Člen | 817
Hmmm, ten callback si stejně budu muset vždy doprogramovat. Jak jsi
ajaxově validoval? Pokud to máš jak jsem psal, tak ti ajaxem zpět muselo
chodit info o té chybě a to stačilo nějak zobrazit.
Podle mě se jedná třeba konkrétně o toto: https://doc.nette.org/cs/forms#…
Pokud se pletu, pak je potřeba upravit dokumentaci.
- pwnedko
- Člen | 24
Použil som addon ,ktorý tu bol už spomenutý. Tak vlastne formumulár validujem live (ajaxovo) čiže ešte pred odoslaním formuláru. Hento čo si ty sem dal je prípadná validácia už ked sa vykoná submiť formulára. Ale to som ja nechcel ja chcem zachytiť vynímiku toho callbacku ešte predtým ako odošlem formulár.
- ViPEr*CZ*
- Člen | 817
pwnedko napsal(a):
Použil som addon ,ktorý tu bol už spomenutý. Tak vlastne formumulár validujem live (ajaxovo) čiže ešte pred odoslaním formuláru. Hento čo si ty sem dal je prípadná validácia už ked sa vykoná submiť formulára. Ale to som ja nechcel ja chcem zachytiť vynímiku toho callbacku ešte predtým ako odošlem formulár.
Ano. Ale i tak je potřeba aspoň odeslat nick či jméno a to porovnat zda-li už je zaregistrované. Pokud to nechceš dělat v samotném submitu, pak si vytvoř JS obsluhu submitu a v ní před samotným submitem musíš odeslat to jméno ajaxem a ověřit. Samotné jméno pak vzít z nějakého input prvku toho formu.
- pwnedko
- Člen | 24
Ja som sa dočítal na fóre ,že napr. anonymnou funkciu ako napr. :
<?php
....
$form['oldPassword']->addRule(function ($control) {
return false;
}, 'Toto uživatelské jméno je již registrováno');
...
?>
Je vlastne parameter $control ,ktorý obsahuju zadanú hodnotu takže myslím si ,že by to išlo validovať aj live.