Odeslání formuláře jiné akci presenteru

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

Dobrý den,

snažím se poslat formulář jiné akci stejného presenteru. Nevím ale jak na to…

Muj prezenter se jmenuje např. Lide
a akce má show a edit.
Nacházím se v akci /Lide/show a odtud chci poslat formulář akci /Lide/credit

zkoušel jsem
$form->$form->onSubmit[] = array('LidePresenter:Edit', 'buyCreditForm_Submit');
a různé modifikace.

dal jsem zkoušel
$form->getElementPrototype()->action('Lide:edit');

Na fóru jsem nic co by mi pomohlo nenašel. Můžete mi někdo prosím poradit?

Majkl578
Moderator | 1364
+
0
-

Nelze, není to logické. Přidej $this->redirect('Lide:edit') do handleru submitu.

RomikTronik
Člen | 27
+
0
-

Proč není logické posílat si formulářem data na jinou stránku?

Když přidám do handleru submitu redirect, přijdu o data, které ve formuláři odešlu.

Aurielle
Člen | 1281
+
0
-

Protože v odesílací fázi máš formulář zpracovat a uložit a ne přeposílat data jinam…

RomikTronik
Člen | 27
+
0
-

Proč bych měl data uložit? Co když je chci jen zobrazit v zavisloti na tom co si odešlu ve formuláři.

Myslím, že je to běžná věc, poslat si něco formulářem na jinou stránku.

Editoval RomikTronik (10. 6. 2010 16:42)

wdolek
Člen | 331
+
0
-

RomikTronik: bezna vec je odeslat formular aby se zpracoval… v Nette to funguje tak, ze se formular defacto odesle na tu samou akci (renderer), ktery zobrazuje formular, pricemz pokud je formular validni, tak se zavola nejaka obsluzna fce definovana v onSubmit formulare. pri uspechu se pak v teto obsluhovaci fci presmerujes jinam.

napriklad kdyz v myForm_submit nepresmerujes, tak se ti po odeslani formulare zobrazi ta sama stranka (stranka s formularem).

… a samozrejme v handleru muzes zmenit pohled (view), nebo se nekam forwardnout. jinak bys ty data musel naklast do nejake session a redirectnout se. pote si pak ty veci ze session vyzobat (jestli tedy chapu spravne co chces vyrobit)

srigi
Nette Blogger | 558
+
0
-

RomikTronik napsal(a):

zkoušel jsem
$form->$form->onSubmit[] = array('LidePresenter:Edit', 'buyCreditForm_Submit');
a různé modifikace.

dal jsem zkoušel
$form->getElementPrototype()->action('Lide:edit');

Skus este $form->setAction()