Úprava formuláru, nefunguje onSuccess callback

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

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
+
0
-

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
+
0
-

A ještě jedna věc, pokud nějak upravuješ form, tak v render metodě je už nejspíš pozdě. Použij kdyžtak actionDefault

Zax
Člen | 370
+
0
-

V render metodě je na nějaké úpravy formuláře určitě pozdě. Signály (tedy i onSuccess) se zpracovávají před renderem.

majky358
Člen | 37
+
0
-

Premenoval som metódu na actionDefault ale signál se nezavolá, jenom ma to presmeruje späť na vyplnený formulář. Doplnená ukázka kódu.

Editoval majky358 (5. 8. 2014 22:04)