Nette 2.4: Problémy s formulářem při nepoužití jeho prvků v šabloně

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

Zdravím,
Na OpenSUSE 13.2 (PHP 5.6.1) jsem zjistil, že za určitých okolností po odeslání formuláře se neprovede obslužná procedura, ale opakovaně se vrací formulář (minimalizovaná demonstrace):

	protected function startup() {
		parent::startup();
		$this->a_typnem   = array('1'=>'nazdar', '2'=>'ahoj');
	}
	public function renderAdd($id) {
		$this->setView('edit');
	}

	protected function createComponentEditForm() {
		$form = new Form;
		$form->addSelect    ('a', 'abc',$this->a_typnem);
		$form->addCheckbox  ('b', 'St.');
		$form->addText      ('c', 'xxx',5,5);
		$form->addSelect    ('d', 'artr',$this->a_typnem);
		$form->addProtection('Vypršel časový limit, odešlete formulář znovu');
		$form->addSubmit    ('save', 'Ulož');
		$form->onSuccess[] = [$this, 'editFormSucceded'];
		return $form;
	}

	public function editFormSucceded($form, $values) {
		$this->template->data = $values;
		$this->setView('ko');
	}
{form editForm}
<table>
	<tr>
		<td></td>
		<td>{input a}</td>
	</tr><tr>
		<td></td><td>{input save}</td>
	</tr>
</table>
{/form}

V této podobě se mi po stisku tlačítka neprovede procedura editFormSucceded, ale vrací se dokola formulář. Pokud zakomentuji formulářový prvek d, editFormSucceded se provede. Problém se týká v šabloně nezobrazených selectů (textové a zaškrtávací pole to nedělá), ostatní prvky ponechají chování formuláře správné. Pokud jsou selecty v šabloně zobrazeny, problém nenastává.

norbe
Backer | 405
+
0
-

Vůbec nemáš nastavenou obsluhu toho, když neprojde validace.

$form->onError[] = [$this, 'editFormError'];

public function editFormError($form) {
}