ztráta ID po odeslání formuláře

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

Nette 2.0.3
PHP 5.4.3

problém je v tom že, když načtu formulář tak ID se zobrazuje správně ovšem jakmile odešlu formulář, tak se ID ztratí a v dumpu se zobrazí pouze hodnota z komentáře (textového pole comment), nějak nevim co s tim ? čet jsem tady něco o action, ale nějak jsem to nepochopil/neuměl jsem to aplikovat.

protected function createComponentCommentForm() {
    $id = $this->getParam('id');
    $form = new Form;
    $form->setMethod('post');
    $form->addText('id','id clanku',12)
            ->setDefaultValue($id)
            ->setDisabled(True)
            ->addRule(Form::INTEGER);
    $form->addTextArea('comment', 'Váš komentář:', 70, 20)
                ->addRule(\Nette\Forms\Form::MAX_LENGTH,"maximálně %d znaků",500);
    $form->addSubmit('save', 'odeslat komentář');
    $form->onSuccess[] = callback($this, 'commentFormSubmitted');
    return $form;
}

public function commentFormSubmitted(Form $form){
    //dump($form);
    $formValues = $form->getValues();
    dump($formValues);

}

edit: Jsme blbec, DISABLED části formuláře se neodesílají – vyřešeno

Editoval Dave3991 (15. 11. 2013 16:49)

Oli
Člen | 1215
+
0
-

S tim action se to ma tak: Prijdes rekneme na Article:default 5. Metoda action se provede pred vykreslenim i po odeslani formulare (znovu). Proto je taky idealnim mistem pro plneni formulare daty. Vypada to potom nejak takhle:

public function actionDefault($id)
{
    $this['commentForm']->setDefault(array(
.       'id' => $id,
.       'comment' => $mujSkvelejKomentar
.   ));
}
Majkl578
Moderator | 1364
+
0
-

Dávat skryté ID do formuláře postrádá smysl, vzhledem k tomu, že ID je obsaženo v URL a parametru akce.

sKopheK
Člen | 207
+
0
-

Tohle se mi stalo, když jsem formulář vykresloval u akce, která nebyla definována v presenteru – tudíž se do akce formuláře nedostaly povinné parametry.

Např. jsem měl actionEdit a v ní vykreslil formulář. Na actionEdit jsem měl odkaz v šabloně n:href="edit $id, ale v presenteru už jsem němel public function actionEdit($id).