Ktery input vyvolal error pri odeslani spatne vyplnenho formulare

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

Zdravicko ve spolek,

mejme napr. nasledujici kod v presenteru:

$form = new Form;
$form->addText('firstname', '*Jmeno:')
	->setRequired('Zadej sve jmeno.');

$form->addText('lastname', '*Prijmeni:')
	->setRequired('Zadej sve prijmeni.');

V pripade, ze mam vypnutou validaci pomoci JS, validace tedy probiha na serveru. Vyplnime pouze jmeno a odesleme formular, zobrazi se chybova hlaska. Jakou cestou mohu zjistit, ktery input tuto chybu vyvolal (ze ji vyvolal input pro lastname)? Tuto informaci bych pouzil napr.: k nastylovani jineho prvku v sablone a nebo obalujiciho elementu.

Jak by jste podobnou situaci resili?

Diky a nette zdar :)

vvoody
Člen | 910
+
0
-

Každý formulárový prvom má metódu hasErrors

matmat
Člen | 3
+
0
-

Diky za reakci. Vedel jsem, ze je mozne volat tuto funkciá nad formularem, ale nejak me nenaladlo, ze i nad prvkem :)

Ted to ma v sablone (respektive v komponente form) nejak takto:

<div class="{if $form->getComponent('lastname')->hasErrors()}error{/if}">

Je nejaka moznost, jak to udelat vice „latte“ (omezit PHP)? Neco jako, kdyz vykresluji label ci input:

{label lastname /}
{input lastname}

Editoval matmat (17. 1. 2014 9:35)

jiri.pudil
Nette Blogger | 1032
+
0
-

Můžeš to zjednodušit použitím n:class:

<div n:class="$form['lastname']->errors ? error">
matmat
Člen | 3
+
0
-

Diky, tohle urcite zprehledni a zjednodusi citelnost kodu…popravde jsem se chtel hlavne zbavit promenne s dolarem, ale to asi nepujde… ;)