Proč během jednoho requestu vrací Application::storeRequest() pokaždé jiný klíč?

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

Ahoj. Trochu jsem si teď hrál s Application::storeRequest a Application::restoreRequest a tak mě napadlo – když během jednoho requestu chci víckrát udělat storeRequest, je k něčemu dobré (resp. ví někdo o use case, kde se to tak používá), aby se při každém zavolání storeRequest uložil aktuální request do jiného klíče?

Když mám aplikaci, kde v šabloně @layout jsou například 4 widgety, které odkazují na nějakou akci, ze které by se aplikace měla sama vrátit zpátky, tak se mi storeRequest volá 4× a tedy vrací 4 různé klíče.

Pro sebe jsem si udělal v presenteru atribut currentRequestKey a getter, který, pokud v tom atributu nic není, udělá Application::storeRequest(), uloží do toho atributu klíč a ten klíč vrátí. Pokud v tom atributu už něco je, vrací se automaticky to něco :). Nevím, jestli nenarazím na nějakou chybku, ale zatím mi to všude funguje, jak má.

Z toho teda vychází má otázka – je k něčemu dobré, aby se během jednoho requestu při každém zavolání Application::storeRequest() vracel jiný klíč?

Filip Procházka
Moderator | 4668
+
0
-

Představ si, že si vygeneruješ 10 odkazů na stránce a každá bude mít backlink. Uživatel si všechny postupně otevře v novém panelu a ten původní zavře. Klikne na první, vyplní třeba formulář a odešle. Formulář se přesměruje zpátky na přehled. Uživatel zavře okno a jde na další panel. Opět něco vyplní, odešle a co udělá stránka? zůstane viset tam, odkud ji odeslal, protože jsi zavolal restoreRequest s klíčem, který už byl smazán s předchozím přesměrováním. Což mě osobně taky vadí.

Chtělo by to nějaký counter otevření adresy, s tím konkrétním backlinkem, ale to by byl třeba nějaký BacklinkManager. Který by uměl request ukládat a pracovat s tímhle čítačem. Sice je problém, že uživatel nemusí vyvolat akci, která by restore vyvolala, ale to je menší problém, než když se to nepřesměruje vůbec.

Pokud to nikdo nenapíše, asi se toho ujmu. Časem, až to budu potřebovat :)

Petr Motejlek
Člen | 293
+
0
-

Jasně, rozumím. Musím se podívat, jak moc je storeRequest náročná operace. Když to totiž takhle píšeš, tak by vlastně naopak bylo potřeba generovat extra klíč pro každý odkaz ;).