InstantClientScript a pravidlo :valid

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

Ve třídě InstantClientScript se při generování skriptu pro operaci :valid zacyklí funkce getClientScript a getValidateScript.

case $operation === ':valid' && $control instanceof FormControl:
	return $tmp . $tmp2 . "res = function(){\n\t" . $this->getValidateScript($control->getRules(), TRUE) . "return true; }();";

Na řádku 308 (ten druhý) by to nejspíš chtělo vyndat z pole pravidlo :valid.

Rekonstrukce

Tento kód dát někam do presenteru. Jen bych nečekal, že to shodí Apache.

$form = new /*Nette\Forms\*/AppForm($this, 'test');
$form->addText("test", "Test")
	->addRule(Form::VALID);

// $form->renderer->clientScript = NULL;
$form->render();

Obdobně se smyčka vytvoří při validaci ve funkci FormControl::validateValid.

public static function validateValid(IFormControl $control)
{
	return $control->rules->validate(TRUE);
}

(Potřebuji to kvůli připravované třídě Captcha, která toto pravidlo přetěžuje.)

Díky.