V jakém presnteru bylo použíto forward?

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

Ahoj všem.
Při pokusu nepřihlášeného uživatele o přístup do presenteru použiju

$this->forward('Sign:in');

a podstrčím přihlašovací formulář. TRACY mi v liště ukazuje původní požadovaný presenter, ale metoda presenteru getName() vrací „Sign“.

Jak získám název původně požadovaného presenteru? Nemůžu na to přijít.

Díky moc.

GEpic
Člen | 566
+
0
-

Předej si ho v parametru :)

PS:
Proč nepoužiješ redirect? Chování forward jak popisuješ je správné

Editoval GEpic (27. 8. 2016 17:52)

Martk
Člen | 661
+
0
-

@GEpic to asi nepůjde, protože se vytváří nový presenter a volá se metoda run.

@kejlicz Přibližně takhle, ale pravděpodobně to bude chtít doladit:

		$request = $this->getRequest();
		if ($request->isMethod('forward')) {
			$requests = $this->application->getRequests(); // inject to presenter Nette\Application\Application
			$index = count($requests) - 2; // skip last created request
			while ($index >= 0 && $requests[$index]->isMethod('forward')) {
				$index--;
			} // returns index of request, -1 = not found

			$lastPresenter = $index === -1 ? NULL : $requests[$index]->getPresenterName();
		} else {
			$lastPresenter = NULL;
		}

Editoval Antik (28. 8. 2016 11:56)

kejlicz
Člen | 201
+
0
-

Díky. Kouknu na to. Já jen zkouším, jak se to chová a nic konkrétního neřeším.