Jak filtrovat tabulku dat formulářem (s multiselecty)

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

Ahojte Neťťáci,
mám tabulku, kterou vypisuju v presenteru – v actionShow nastavím $this->data = …->fetchAll();, pak v renderShow předám $this->data do $this->template.

Nad tabulkou mám form, ve kterém si multiselectem mohu vybrat jen podmnožinu záznamů.

A teď přichází problém: po odeslání formuláře se nejdřív zavolá actionShow, a až pak se volá callback formu. Kdyby to bylo naopak, můžu v callbacku formu naplnit $this->data vybranou podmnožinou dat z tabulky, a pak si v actionShow zjistit že $this->data už byla naplněna a druhé nahrávání přeskočit. Teď ale nahraju celou (velkou) tabulku z DB pokaždé (v actionShow), a až potom následně ve form callbacku nahraju podruhé jen podmnožinu. A to je samozřejmě velké plýtvání a zbytečná zátěž databáze (zvlášť když jsou v tabulce stovky záznamů a podmínce jich odpovídá pět).

Jak tohle elegantně vyřešit? Možná bych měl z formu dát redirect na jiný presenter, nezjistil jsem ale jak mu předat jako parametr pole (v tabulce jsou data pro velké množství měst, a potřebuji nějak předat fakt, že v multiselectu byla vybrána: město 3, město 8, město 10 …).

Asi je to něco zjevného, ale netuším. Díky za každý nápad!