Přenos parametrů mezi komponentou a presenterem
- kedrigern
- Člen | 102
Mám grid a mám v něm stránkování, řázení, filtrování apod. Pro editaci položky mám zvláštní akci (actionEdit).
Samozřejmě bych po návratu z editace rád měl možnost zobrazit grid zcela stejně (včetně stránky, řazení, …).
Jako možná řešení vidím:
- grid předá nutné parametry presenteru (ale těch může být i docela dost a to se mi moc nelíbí)
- grid vytvořím i tam, kde ho nepotřebuji
- grid uloží parametry jinde než v URL (cookie)
- namísto action použiji handle
Mé otázky:
- Jsou další možnosti?
- Je rozumné ovládat třeba i větší editační formulář skrz handle? Co pak např. url? (Když bych chtěl nějak inteligentně odkázat)
- Pokud bych využil cookie, tak bych mohl stav gridu ukládat napříč prezentery etc. – to mi přijde dobré. Má to nějaké vážné nedostatky? Např. aby byl grid rovnou odkazatelný, tak bych musel uměle měnit url při načítání parametrů.
Ptám se hlavně na nějakou best practise. Jedná se o rozsáhlejší aplikaci, kde jsou gridy na hodně místech a uživatelé v ní tráví dost času (opravdu s ní pracují, ne jen 4× za den kliknou).
EDIT: Jo a zapomněl jsem, že bych chtěl, aby to mohlo fungovat i ajaxově.
Editoval kedrigern (9. 7. 2013 11:04)
- Michal Vyšinský
- Člen | 608
Nevím, jestli je to good practise, ale napadlo mě ještě, že by se dalo ve formuláři do hidden inputu nastavit url, ze které se na form přešlo (http_referer) a pak přesměrovávat na url právě z toho inputu.
- Jan Suchánek
- Člen | 404
Nelze, formulář vůbec netuší o persistentních parametrech jiných komponent.
Lze to řešit jedině ukládáním parametrů nebo ještě lépe signálama (handle), Action zůstane stejná (např.: default) .
Řešíte to jinak?
Editoval jenicek (8. 7. 2013 16:41)
- Jan Suchánek
- Člen | 404
a v případě ajaxového odesílání formuláře to také bude fungovat?
vvoody napsal(a):
- Jan Suchánek
- Člen | 404
To jistě, ale také jak nejpohodlněji.
Příklad problému je zde (https://forum.nette.org/…jax-odeslani#…), vždy se tedy při jakémkoliv postu i ajaxovém vyplatí přesměrovávat?
Editoval jenicek (9. 7. 2013 9:14)
- kedrigern
- Člen | 102
Problematický ḱód je přímo zde: https://api.nette.org/…ter.php.html#… Konkrétně řádek 1134:
$this->sendResponse(new Responses\ForwardResponse($request));