Různé metody pro zpracování jednoho formuláře

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

Dobrý den, mám formulář, který potřebuju zpracovávat na různých částech webu různými metodami. jak se to dá udělat? zkoušel jsem toho, ale vždy se volá jen jedna metoda:

public function renderDefault()
{
 $this->prvni = true;
}

public function createComponentForm()
{
 		if($this->prvni)
            $form->onSuccess[] = $this->zpracujPrvni;
        else
            $form->onSuccess[] = $this->zpracujDruhy;
}

Díky za radu

David Matějka
Moderator | 6445
+
0
-

Formular se zpracovava na urovni signalu (handle), tery pred render metodou. viz https://doc.nette.org/…n/presenters#…

Editoval matej21 (28. 10. 2014 22:46)

bluray
Člen | 178
+
0
-

Díky za radu, můžeš mi prosím tě napsat jednoduchou ukázku? děkuji

David Matějka
Moderator | 6445
+
0
-

proste to presun z render* do action* metody

bluray
Člen | 178
+
0
-

Díky za radu, ale jak nastavím šablonu? Když budu mít odkaz na action místo na render, tak jak pak ten form vypíšu v nějaké šabloně? když jsem měl metodu render, tak se šablona přiřadila automaticky

David Matějka
Moderator | 6445
+
0
-

precti si odkazovanou stranku v dokumentaci, vola se oboje (nejdriv action, pak render)

bluray
Člen | 178
+
0
-

Už mi to funguje, díky za pomoc

bluray
Člen | 178
+
0
-

Ještě mám jeden problém. mám následující url: www.neco.cz/pokus?… když použiju metodu action, tak po kliknutí na tlačítko formuláře se mi odešle na adresu www.neco.cz/pokus, tedy není tam parametr a web mi spadne, protože se nenačtou data z databáze. když použiju handle metodu, nefunguje to taky, protože se nezavolá metoda edit, ale zase add. Posílám kod:

<a n:href="Presenter:edit id => $data->id">Upravit</a> //odkaz na formulář pro editaci

//Formulář
protected function createComponentAddItemForm(){
$form = new Form();
if($this->edit)
            $form->onSuccess[] = $this->edit;
        else
            $form->onSuccess[] = $this->add;
}

public function edit($form, $values){

}

public function add($form, $values){

}

public function actionEdit($idCaravan){
   $this->edit = true;
}

public function renderEdit(){
	if($this->edit)
		$this->template->title = "Editovat";
	else $this->template->title = "Vytvořit";
}

Díky

David Matějka
Moderator | 6445
+
0
-

proc ze sablony generujes url s parametrem s nazvem „id“ a v actionEdit ocekavas idCaravan ?

bluray
Člen | 178
+
0
-

Jo to je jenom překlep, jinak to mám všude stejný

David Matějka
Moderator | 6445
+
0
-

ukaz teda cely kod vcetne nacitani tech dat atd.