Formulář A → Formulář B, data mimo URL

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

Dobrý večer všem. :-)
Předem se omlouvám jestli neumím hledat, ale mám následující situaci a prosím vás o radu jak nejlépe postupovat a využít Nette.

Cílem je část aplikace pro přidávání inzerátů do databáze. Dejme tomu, že je možné vložit např. 3 druhy inzerátů ( Byt, Auto, Zvíře ). Několik atributů u všech tří typů je společných, např. název,cena apod. Potřebuji, aby se na začátku zobrazil první formulář, ve kterém bude radio button s výběrem typu inzerátu a textboxy se společnými atributy (název, cena). Po odeslání tohoto formuláře potřebuji redirect na jiný View, ve kterém se zobrazí formulář s prvky už pro konkrétní typ inzerátu (u auta např. objem motoru, rychlost,…)

Moje otázka a prosba zní:
Jak provést redirect na jinou Template a přenést hodnoty, které uživatel vyplnil v prvním (hlavním) formuláři? Potřeboval bych jinou metodu než Persistentní parametry, protože ty se předávají v URL (což by zde nebylo pěkné)

Asi někteří z vás navrhnou nějakou JavaScriptovou vychytávku, která by automaticky zobrazovala/skrývala formulářová pole podle výběru typu inzerátu z radio buttonu. Rád bych se javascriptu vyhnul, potřeboval bych řešení které by spolehlivě fungovalo s vypnutým JavaScriptem, takže nejlépe asi logikou v presenteru.

Zkoušel jsem

$this->redirect("NovyInzerat:auto", $pole_dat);

Ale pole_dat se mi nepodařilo přenést :-(

Díky moc za všechny rady. :-)

Editoval Bohosu (15. 11. 2010 23:43)

Bernard Williams
Člen | 207
+
0
-

Nazdárek,

zkus použít forward.

Bernard

Bohosu
Člen | 24
+
0
-

Díky Bernarde za tip :)

Jak ale prosím ty data potom získám v action? Předává se jako parametr funkci? Viz:

public function actionByt($pole_dat) {

}

Nebo je to uplně jinak :) Díky

Bernard Williams
Člen | 207
+
0
-

To si nejsem jistý – ještě jsem forward nikdy nepoužil :-) Zkus použít:

$this->forward("NovyInzerat:auto", 'data' => $pole_dat);

a pak snad budou v:

public function actionByt() {
	$data = $this->getParam("data");
}

Popř. je zkusit najít přes:

debug::dump($this->getParam());

Editoval Bernard Williams (16. 11. 2010 20:47)