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
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á.