funkce onValidate nenastaví prvkům formuláře chyby

trta911
Člen | 35
+
0
-

Ahoj, mám tu jeden formulář, kde mám (mimo jiných) 2 prvky, které potřebuji v závislosti jeden na druhém validovat.
Do továrničky formuláře jsem tedy přidal:

$form->onValidate[] = [$this, 'validateForm'];

a vytvořil funkci pro validaci:

public function validateForm(\Nette\Forms\Form $form)
{
		....
    $form['from']->addError("Jejda, chybyčka se vloudila");
    $this->presenter->redrawControl('form');
    return false;
		....
}

pokud odešlu formulář, tak se do něj správně přiřadí chyba z „addError“ ale vypíše se mi globálně pro celý form.

A já bych potřeboval tuhle chybu vypsat přesně pro ten konkrétní input „from“.

formulář mám renderovaný následovně:

{snippet form}
	<form n:name="orderform">
		{input from class => 'form-control datepicker'}
		{input submit class => 'ajax btn btn-success'}
	</form>
{/snippet}

zkoušel jsem do šablony přidávat $form[‚from‘]->error ale i zkoušel dumpovat hasOwnError ale chyby se prostě vždy přiřadí globálně na form nikoliv ke konkrétnímu inputu.

Poradíte prosím kde dělám chybu?

Aishak
Člen | 30
+
0
-

Ahoj, nevím jestli to může přímo za tvojí chybu, ale metoda validateForm by neměla mít žádnou návratovou hodnotu (tedy bez return). Dle dokumentace se metoda chápe za úspěšnou pokud nevrátí (nepřidá) žádný error do formuláře (nebo jeho prvku).
Zkus tedy return úplně odebrat. Mě toto kdysy také potrápilo.
Nejsem si jistý, zda je ten snippet umístěny správně před formulářem, ale to teď nechci kecat.

trta911
Člen | 35
+
0
-

@Aishak Díky za tip, oddělal jsem ten return a také upravil zobrazování chyb na:

<span style="color: red" n:ifcontent>{$form['from']->getError()}</span>

a už to šlape :-)