Jak zjistit, že se formulář nepodařilo validovat?

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

Mám form, který má spoustu validačních pravidel aby byl supr krásně vyplněnej. Ale je tam možnost, že se na to uživatel taky vykašle.
Takže potřebuju po prvním odeslání vypsat všechny chyby (mám tam normální validační pravidla) a odeslání zastavit. Ale pak bych chtěl validaci vypnout, aby to šlo poslat i blbě a nemusel jsem uživatele pořád šikanovat. Jde to nějak poznat? Ať už ve formu, nebo klidně až v JS (přidal bych si hidden tlačítko, které by nemělo validaci a pak by se objevilo)

Šaman
Člen | 2668
+
0
-

Můžeš to zkusit přes onSubmit (událost po odeslání bez ohledu na validitu) a onSuccess (úspěšně, tedy validní odeslání). Jestli jsi to už odeslal podruhé, to si asi budeš muset nějak řešit pomocnou proměnnou.

Hafran
Člen | 121
+
0
-

No to mě taky napadlo, ale vypadá to, že ani onSubmit ani onValidate se mi nepustí, když to zastaví JS validace. Takže se spustí pouze pokud je formulář validní, což úplně nechápu.

Azathoth
Člen | 495
+
+1
-

Vypnout js validaci? Ale to je asi takové dost hloupé.
A nebo použít podmínky a místo například

$form->addText('jmeno', 'Jméno')
	->addRule(...);

tam mít podmínku na nějaký hidden field, který si javascriptem změníš po prvním neúspěšném odeslání, to by možná mohlo fungovat.

$form->addHidden('turnoff', false);
$form->addText('jmeno', 'Jméno')
 	->addConditionOn($form['turnoff'], Form::EQUAL, TRUE)
		->addRule(...);

Editoval Azathoth (24. 6. 2015 23:19)

Šaman
Člen | 2668
+
0
-

Nebo zruš validační pravidla a zvaliduj si to sám až při zpracování. S tím ti pomůžou validační metody frameworku.