Nefunguje vlastní js validace

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

Pěkný den,

vytvářel jsem vlastní js validaci pro vkládání zboží do košíku, kde je třeba, aby se zboží dalo vkládat jen po určitých násobcích. Validace na straně serveru funguje bez problému, ale javascriptu se nějak nechce.

function divisibilityValidator($amount, $value)
{
	return $amount->value % $value === 0;
}

protected function createComponentAddBasketForm()
{
$form = new Form;
//...
$form->addText('amount','ks')
	->addRule(FORM::FILLED,'Zadejte množství')
	->addRule([$this,'divisibilityValidator'],'Množství musí být násobkem čísla %d',2);
//...
}

Všiml jsem si, ale že v HTML to do data atributu pro validaci nedává nic ohledně toho divisibility validatoru – výsledek tam vypadá takto:

<input type="number" value="1" min="1" id="pocet-kusu" name="amount" required=""
data-nette-rules="[{"op":":filled","msg":"Zadejte množství"}]">

Verze Nette Forms je nejnovější 2.3.*

Kdepak bych mohl dělat chybu?

David Grudl
Nette Core | 8136
+
+1
-

Je potřeba, aby ten validátor byl statická metoda, tj. třeba addRule('MyClass::divisibilityValidator', ….

David Macek
Člen | 3
+
0
-

Výborně, funguje to, díky!