Předání errorů z vlastního pravidla do netteForms.js → Nette.showFormErrors

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

Ahoj, snažím se vytvořit si vlastní pravidlo pro formulář. Jedná se o validaci proti databázi, jestli uživatel existuje. To mi funguje, ale chtěl bych tam udělat takovou dodělávku. Když používám vestavěná validační pravidla, tak se error message nasměruje právě do netteForms.js do funkce showFormErrors. Jak pošlu errory z vlastního validačního pravidla právě do této funkce?

Takhle nějak vypadá moje validace:

<?php
	$form->addText('username', 'Username:')
		->addRule(function ($control) {
			$username = $control->value;
			$row = $this->database->table('user')->select('username')->where('username',$username)->fetch();

			return $row;
		}, 'Uživatel neexistuje');
?>

Předem děkuji za pomoc.

S_I_M_O_N
Člen | 23
+
0
-

CZechBoY napsal(a):

https://doc.nette.org/cs/forms#…

Jestli jsem to dobře pochopil, tak ta funkce v dokumentaci je určená k validaci formuláře v JavaScriptu. To já ale nechci. Já chci pouze předat tu zprávu ‚Uživatel neexistuje‘ přesně jako ty vestavěné validační podmínky v PHP. Jak to udělám?

Jinými slovy, když udělám:

<?php
$form->addText('email', 'Email:')->addRule(UI\Form::EMAIL, 'Neni e-mail');
?>

Tak hlaska ‚Neni e-mail‘ (v případě, že uživatel nezadá validní e-mail) bude vypsána funkcí showFormErrors.

CZechBoY
Člen | 3608
+
0
-

To bys musel udělat tu validační funkci v js jak jsem poslal. Nebo vypnout validaci v js a vypisovat hlášky jen přes php no.

premek_k
Člen | 172
+
0
-

Nejde S_I_M_O_Novi spíš o toto: https://doc.nette.org/cs/forms#…

?

S_I_M_O_N
Člen | 23
+
0
-

premek_k napsal(a):

Nejde S_I_M_O_Novi spíš o toto: https://doc.nette.org/cs/forms#…

?

Ne. Validaci už mám naprogramovanou. Jde mi o to, že mám vlastní proceduru, jak zobrazovat error hlášky uživateli. To dělám na jednom místě, a tím je showFormErrors v souboru netteForms.js. Vestavěné validační funkce posílají error hlášky do této funkce. Já se ptám, jak to tam dostat z vlastního validačního pravidla, nebo zdali je to vůbec možné, ideálně jestli to není součástí frameworku.

Mysteria
Člen | 797
+
0
-

Nehodila by se ti tahle server-side validace?

S_I_M_O_N
Člen | 23
+
0
-

CZechBoY napsal(a):

To bys musel udělat tu validační funkci v js jak jsem poslal. Nebo vypnout validaci v js a vypisovat hlášky jen přes php no.

A jak se můžu připojit z JS do databáze? A i kdybych tu funkci udělal v JS, tak jak ty hlášky teda dám do té funkce showFormErrors?

Mysteria
Člen | 797
+
+1
-

Přímo ne, ale můžeš si poslat AJAX request, kde ti PHPčko vrátí JSON se statusem validace a ten tam pak zobrazit (ostatně se podívej na mnou výše odkazované video).