Cannot set HTTP code after HTTP headers have been sent (…Nette\Web\User.php:450)) a Environment::getUser()

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

Zdravím,

snažím se implementovat přihlašování, nicméně mi to hodilo právě tuto chybu.

Postupoval jsem dle: https://doc.nette.org/…thentication.

Jakmile v Admin_DefaultPresenter zakomentuju $user = Environment::getUser();, zpracování postoupí dále, ale samozřejmě vyhodí error, jelikož if (!$user->isAuthenticated()) { nemá tušení o objektu $user.

Chci se zeptat, jaké jsou možnosti debugu těchto hlášek, popř. jak se postupuje?

Děkuji moc.

Aurielle
Člen | 1281
+
0
-

Tato chyba je způsobena předčasným vypsáním výstupu. Nemáš někde v tom presenteru dump něčeho nebo nevypisuješ něco?
Jinak $user = Environment::getUser(); je v pořádku. Ale před časem došlo k přejmenování metod, takže:

  • authenticate() → login() (jen v User, v Authenticatoru zůstává authenticate!)
  • signOut() → logout()
  • isAuthenticated() → isLoggedIn()
  • getSignOutReason() → getLogoutReason()
  • $onAuthenticated → $onLoggedIn
  • $onSignedOut → $onLoggedOut

Více viz https://forum.nette.org/…t-isloggedin

wise
Člen | 161
+
0
-

Přesně tak, ve chvíli, kdy jsem schoval Laďenku, vypsalo mi to klasický error a z něj jsem to poznal. Laděnka mi v tomto případě moc nepomohla :)