Úprava formuláru, nefunguje onSuccess callback
- majky358
- Člen | 37
Zdravím, pokúšal som sa upraviť nasledovne v kóde formulár, mám klasickú komponentu:
namespace \Nette\Application\UI\Form;
public function createComponentEditForm() {
$form = new Form;
$form->addText("text","Text:");
$form->addUpload("image","Upload:")->addConditionOn(...)->addRule(...);
$form->onSuccess[] = array($this, "editFormSubmitted");
return $form;
}
public function actionUpdate($id) {
$userId = $this->getUser()->getIdentity()->data['user_id'];
if(!$this->front->checkUserEditOwner($id, $userId) || !$this->checkUserLoggedIn()) {
$this->redirect('Edit:default');
}
$result = $this->front->selectEditToUpdate($id);
//re-pregmatch text
$result['content'] = $this->pregMatchForUpdate($result['content']);
$result['download'] = $this->pregMatchForUpdate($result['download']);
$result['lastversion'] = $this->replaceVersionUrl($result['lastversion']);
$result['generalversion'] = $this->replaceVersionUrl($result['generalversion']);
$form = $this['editForm'];
unset($form['text']);
$form->setDefaults($result);
$this->template->updateForm = $form;
}
Problém je, že sa mi nezavolá onSuccess metóda, každopádne som mal s ňou problém aj keď som nemenil prvky formuláru. Form errors == NULL.
Komponentu, formulár využívam pre pridávanie aj editovanie dát, a pri editovaní potrebujem pozmeniť ten prvok. Ďakujem
Editoval majky358 (5. 8. 2014 22:03)
- David Kudera
- Člen | 455
Možná bych poradil poslat celý kód toho presenteru a říct, co vlastně potřebuješ. Takhle je to docela zamotaný ;-)
Každopádně na první pohled řeknu to, že dávat templatě form k vykreslení není úplně správně.. V šabloně se vykresluje přes {control testForm}
Editoval David Kudera (5. 8. 2014 15:31)
- David Kudera
- Člen | 455
A ještě jedna věc, pokud nějak upravuješ form, tak v render metodě je už nejspíš pozdě. Použij kdyžtak actionDefault