funkce onValidate nenastaví prvkům formuláře chyby
- trta911
- Člen | 35
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
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.