ajax formular vlastni validator
- error414-c
- Člen | 45
uz jsem dotaz psal ale asi ho nikdy nechapal tak to napisu presneji.
Stahl a rozchodil jsem si vzorovy priklad https://pla.nette.org/…ivajici-ajax
funguje to dobre az do doby kdy do formulare vlozim vlastni validator
HomePresenter.php:51
<?php
$form->getElementPrototype()->class('ajax');
$form->addText('author', 'Jméno:', 30, 50)
->addRule('MyValidators::oddNumber', 'The entered number is not odd.');
$form->addTextArea('text', 'Text:', 50, 8)
?>
MyValidoator.php
<?php
public static function oddNumber($control /*, $arg]*/)
{
// pokud je podmínka splněna, metoda vrací TRUE; jinak FALSE
return (bool)($control->value == 2);
}
?>
tak prestane kniha fungovat pokud se jako autor nevlozi „2“. To nemaji formulare pres ajax nijak vyreseny custom validatory?
Treba kdyz zjisti ze je knim prirazena trida „ajax“ tak se vlozi do snippet, pri odeslani kdyz formular zjisti ze je pozadavek pres ajax „$this->isAjax()“ tak vrati formular s chybama a znevalidni snippet „form“.
Nebo jak udelat aby form fungoval s custom validatory kdyz bude pouzit ajax?
- error414-c
- Člen | 45
Ondřej Brejla napsal(a):
Jsi si jistý svým validátorem?
jj, je to validator s ukazky https://forum.nette.org/…tom-validace
je to jen ukazka pouziti vlastnich validatoru.
- Ondřej Brejla
- Člen | 746
To právě není…a proto se znovu ptám, jsi si jistý svým validátorem? Pořádně si je prohlédni…případně popřemýšlej, co má asi dělat ;-)
- error414-c
- Člen | 45
Ondřej Brejla napsal(a):
To právě není…a proto se znovu ptám, jsi si jistý svým validátorem? Pořádně si je prohlédni…případně popřemýšlej, co má asi dělat ;-)
tak co je na to validatoru spatne?
- error414-c
- Člen | 45
Foowie napsal(a):
„tak prestane kniha fungovat pokud se jako autor nevlozi „2““
To je ale přesně to, co ten validátor má dělat, respektive jak je naimplementován .)
jj ma to delat, ale validator ma i informavovat ze se neco nepovedlo, ale kdyz je to pres ajax tak zadnou chybu nevypise.
- Aurielle
- Člen | 1281
Testuješ rovnost dvěma, místo modula:
public static function oddNumber($control)
{
// pokud je podmínka splněna, metoda vrací TRUE; jinak FALSE
return ($control->value % 2 == 1);
}
edit: tak buď jsem nepochopil nebo jste zase přešli k něčemu jinému :D
Editoval gmvasek (9. 4. 2010 15:01)
- error414-c
- Člen | 45
gmvasek napsal(a):
Testuješ rovnost dvěma, místo modula:
public static function oddNumber($control) { // pokud je podmínka splněna, metoda vrací TRUE; jinak FALSE return ($control->value % 2 == 1); }
to je ale uplne jedno i kdybych tam dal
<?php
return false
?>
jde me o to ze kdyz neprojde validator a ja mam form pres ajax tak me do response nevlozi tu chybu.
tady je ukazka http://leteckaposta.cz/342848007 pri chybe to nic nezobrazi
Editoval error414-c (9. 4. 2010 15:10)
- Ondřej Brejla
- Člen | 746
Pokud jde o znevalidnění snippetu u formu, který není validní, tak mě takhle na rychlo napadá
$form->onInvalidSubmit[] = callback($this, 'invalidSubmit');
public function invalidSubmit(AppForm $form) {
$this->invalidateControl('form');
}
Ale nezkoušel jsem…nevím…
Editoval Ondřej Brejla (9. 4. 2010 15:41)
- error414-c
- Člen | 45
Ondřej Brejla napsal(a):
Pokud jde o znevalidnění snippetu u formu, který není validní, tak mě takhle na rychlo napadá
$form->onInvalidSubmit[] = callback($this, 'invalidSubmit'); public function invalidSubmit(AppForm $form) { $this->invalidateControl('form'); }
Ale nezkoušel jsem…nevím…
jo to je presne ono, moc diky.