V presenteru nelze volat getUser()
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- bluray
- Člen | 178
Dobrý den, když v presenteru volám
$this->getUser()->isLoggedIn()
Call to a member function isLoggedIn() on a non-object
Kód vypadá takto:
class HomePresenter extends \Nette\Application\UI\Presenter{
/** @var Nette\Security\User */
private $user;
public function __construct() {
parent::__construct();
if(!$this->getUser()->isLoggedIn())
$this->redirect("Homepage:");
}
}
Chci ověřit jestli byl uživatel přihlášen, pokud ne tak bude přesměrován na hlavní stránku.
- David Kudera
- Člen | 455
Zdravím, v konstruktoru user ještě neexistuje. Stačí ale použít metodu startup.
- David Matějka
- Moderator | 6445
class HomePresenter extends \Nette\Application\UI\Presenter{
public function startup() {
parent::startup();
if(!$this->getUser()->isLoggedIn())
$this->redirect("Homepage:");
}
}
ano, ta metoda se vola automaticky ve chvili, kdy je presenter pripraven – tedy jsou vlozeny vsechny zavislosti, inicializovany parametry …
- David Matějka
- Moderator | 6445
Konstruktor pouzivej maximalne pro vlozeni zavislosti. Vsechnu logiku provadej nejdrive v onom startupu