Změna $request před storeRequest()
- phx
- Člen | 651
Zdravim
Resim problem jak pred ulozenim requestu pozměnit jeho obsah. Konkretne se mi jedna o jeden persistentni parametr. Bohuzel Request je zamrzlej a nemuzu do nej hrabat.
Zkousel jsem hledat i cestu jak jej upravit pri restoreRequest, ale taky ee:(
Posledni moznost je hrabnout do SESSION, ale to je prasarna.
Proc to resim? Mam jednu app kde jednu hodne s AJAXem. A resim problem, co kdyz bude uzivatel dlouho neaktivni a klikne na AJAX akci? Fajn ulozim request a presmeruji, prihlasi se, restornu a jedu. Ale v tu chvili je uzivatel na nejake jine strance (na takove kam by se mel dostavat jen AJAXem) coz dela kapku nelechu. Proto chci udelat aby kdyz k tomuto dojde aby se ajax deaktivoval do chvile nez se nejak vrati na vychozi stranku. K tomu ma slouzit ten persistentni parametr.
- kravčo
- Člen | 721
phx napsal(a):
Jenze jak ho predam do storeRequest()?
Riešil som podobný problém, keď som tweakoval odoslanie formulára prihláseným používateľom po dlhej nečinnosti + nejaké veci s flash správami.
Ak si dobre pamätám vyzeralo to nejako takto:
MyApplication.php
class MyApplication extends Application
{
public function storeRequest($request = '+ 10 minutes', $expiration = '+ 10 minutes')
{
// $request (PresenterRequest) is optional parameter
// to maintain compatibility with original function
if (!$request instanceof PresenterRequest) {
$expiration = $request;
$requests = $this->getRequests();
$request = end($requests);
}
// rest of the function is nearly same as original code
$session = $this->getSession('Nette.Application/requests');
do {
$key = substr(md5(lcg_value()), 0, 4);
} while (isset($session[$key]));
$session[$key] = $request; // ... just here, we use parameter
$session->setExpiration($expiration, $key);
return $key;
}
// public function restoreRequest(...) stays the same
}
config.ini
; ...
service.Nette-Application-Application = MyApplication
; ...