ajax formular vlastni validator

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
error414-c
Člen | 45
+
0
-

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?

Ondřej Brejla
Člen | 746
+
0
-

Jsi si jistý svým validátorem?

error414-c
Člen | 45
+
0
-

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
+
0
-

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
+
0
-

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?

Foowie
Člen | 269
+
0
-

error414-c 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 .)

Editoval Foowie (9. 4. 2010 14:57)

error414-c
Člen | 45
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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.