Application::res­toreRequest

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

Rozhodl jsem se trochu prozkoumat zázračný akrabat a v AuthPresenter jsem spatřil tuto magickou konstrukci:

$this->getApplication()->restoreRequest($backlink);
$this->redirect('Dashboard:');

Při obnovení požadavku dojde k redirektu, a to i přesto, že Application::restoreRequest vyhazuje jen ForwardingException. Tipnete si proč? Odpověď.

Navrhuju přidat možnost, jaká výjimka se bude vyhazovat. Myslím, že ve většině případů je lepší přesměrovat. Jestli je to všechno expected behaviour, potom se mi nelíbí, že se neposílá S303_SEE_OTHER ani S303_POST_GET.

Ještě magická slova na závěr: resit. dg

Díky.

David Grudl
Nette Core | 8142
+
0
-

poresim. dg.

Jod
Člen | 701
+
0
-

JJ, ja potrebujem presmerovať aj pri ajaxovom requeste, čo mi doteraz nefungovalo poriadne.

try {
	$this->getApplication()->restoreRequest($this->backlink);
} catch (ForwardingException $e) {
	$httpRequest = Environment::getHttpRequest();
	$uri = $this->getApplication()->getRouter()->constructUrl($e->getRequest(), $httpRequest);
	$this->redirectUri($uri);
}

Editoval Jod (10. 3. 2009 8:54)

pmg
Člen | 372
+
0
-

David Grudl napsal(a):

poresim. dg.

Už jsem ve své nedočkavosti přemýšlel, jak to nenápadně bumpnout. :-) Super!