jak předávat data mezi formuláři v rámci jednoho presenteru
- pp
- Člen | 50
Chtel bych mit serii nekolika formularovych komponent, ktere na zaklade vstupu uzivatele a předchozích získaných dat postupne získávají další rozsahlá datová pole z DB.
class MyPresenter extends BasePresenter {
protected function createComponentForm1() {
// prvni vstup1 uzivatele
}
public function form1Submitted() {
// nacteni dat z DB podle vstupu1 uzivatele a ulozeni do pole $ARR1
redirect(this)
}
protected function createComponentForm2() {
// na zaklade dat v $ARR pripravim dalsi vstup2 pro uzivatele
}
public function form2Submitted() {
// nacteni dat z DB podle vstupu2 uzivatele a ulozeni do pole $ARR2
}
protected function createComponentForm3() {
// na zaklade dat v $ARR2 pripravim dalsi vstup3 pro uzivatele
}
public function form3Submitted() {
// nacteni dat z DB podle vstupu3 uzivatele a ulozeni do pole $ARR3
}
// zpracovani poli $ARR1, $ARR2, $ARR3 a ulozeni vysledku do DB
}
Neni mi ale uplne jasny jak si spravne data mezi formulari predavat.
Zkousel jsem predavat jako parametr pri presmerovani:
$this->redirect('Presenter:akce', $ARR1);
nebo zavest pole jako persistentni parametr ale koncim chybou (asi kvuli prilisne velikosti pole pro GET)
Mozna na to jdu uplne blbe ale jak by se v Nette melo toto predavani elegantne resit ?
- CZechBoY
- Člen | 3608
https://github.com/…Forms-Wizard
Pouzil bych hotovy reseni – vytvaret znovu asi nema smysl.
- pp
- Člen | 50
Zkusil jsem si ukladat data postupne do session ale ve zpracovani posledniho
formu k nim stejne nemam pristup.
Primo v souboru na serveru ale jsou. V cem je problem ?
protected function createComponentFormX1() {
$form = new Form;
$form->addSubmit('submit', 'A');
$form->onSuccess[] = callback($this, 'formX1Submitted');
return $form;
}
public function formX1Submitted($form) {
$section = $this->getSession('XXX');
$section->aaa = "aaa";
$this->redirect('Router:A');
}
protected function createComponentFormX2() {
$form = new Form;
$form->addSubmit('submit', 'B');
$form->onSuccess[] = callback($this, 'formX2Submitted');
return $form;
}
public function formX2Submitted($form) {
$section = $this->getSession('XXX');
$section->bbb = "bbb";
$this->redirect('Router:B');
}
protected function createComponentFormX3() {
$form = new Form;
$form->addSubmit('submit', 'C');
$form->onSuccess[] = callback($this, 'formX3Submitted');
return $form;
}
public function formX3Submitted($form) {
$section = $this->getSession('XXX');
dump($section);
// predpokladal jsem ze tady uvidim v session obe promenne "aaa" i "bbb" ale session ""XXX" ma data NULL
}
Tady je dump sekce
Nette\Http\SessionSection #de7a
session private => Nette\Http\Session #f235
regenerated private => NULL
options private => array (15)
request private => Nette\Http\Request #937d
response private => Nette\Http\Response #83bd
cookieDomain => ""
cookiePath => "/"
cookieSecure => FALSE
cookieHttpOnly => TRUE
warnOnBuffer => TRUE
code private => 200
handler private => NULL
name private => "XXX" (3)
data private => NULL
meta private => FALSE
warnOnUndefined => FALSE