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
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.
- Martk
- Člen | 661
@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)