Ajax restore request

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

Nevie niekto ako sa dá spraviť ajaxové presmerovanie pri backlinku?
$this->getApplication()->restoreRequest($this->backlink);
Vracia mi to stránku, ale ja potrebujem aby sa mi to presmerovalo z loginu.

Vyriešil som to tak, že som dal do BasePresenter:

<?php
	function ajaxRestoreRequest($key)
	{
		$session = Environment::getSession('Nette.Application.Request');
		if (isset($session->rq[$key])) {
			$request = $session->rq[$key];
			unset($session->rq[$key]);

			$params = $request->getParams();
			$presenter = $request->getPresenterName();
			$view = $params['action'];
			$destination = ':' . $presenter . ':' . $view;
			$this->redirect($destination);
		}
	}
?>

Editoval Jod (14. 11. 2008 10:52)

LM
Člen | 206
+
0
-

nebylo by lepší něco jako:

<?php
try {
	$this->getApplication()->restoreRequest($backlink);

} catch (ForwardingException $e) {
	$uri = $this->constructUrl($e->getRequest());
	$this->redirectUri($uri);
}
?>
Jod
Člen | 701
+
0
-

Vidíš, tá konštrukcia s try catch blokom mi nenapadla :D
Niesom nato v php zvyknutý

Jod
Člen | 701
+
0
-

Po novom mi to funguje takto:

<?php
	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 (27. 2. 2009 0:34)