Jak filtrovat tabulku dat formulářem (s multiselecty)
- keff
- Člen | 12
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!