[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • getUser()
Seite 1 von 1

getUser()

Verfasst: 4. Mai 2017, 10:56
von w.busch
Ich möchte in einem Seiten-Template den Benutzernamen ermitteln, wenn dieser im Backend angemeldet ist.
Wenn ich es so versuche:
$user=rex::getUser()->getName();
bekomme ich die Fehlermeldung "Call to a member function getName() on null".
Warum liefert rex::getUser() ein leeres Objekt?

Re: getUser()

Verfasst: 4. Mai 2017, 11:47
von runstop64
Hi,

das User-Objekt existiert nur, wenn ein User tatsächlich eingeloggt ist. Vor der Abfrage des Namens musst du daher prüfen, ob ein User-Objekt zurückgegeben wurde. Am einfachsten sollte das mit

Code: Alles auswählen

if (rex::getUser()) { ... }
gehen.

Re: getUser()

Verfasst: 4. Mai 2017, 13:27
von Gregor.Harlan
Es ist noch zu beachten, dass im Frontend rex::getUser() nicht automatisch befüllt wird, sondern erst, wenn es zum ersten Mal explizit angefordert wurde.
Es kann sein, dass man ein Addon installiert hat, welches das immer macht, und daher rex::getUser() auch im Frontend immer funktioniert, man sollte sich darauf aber nicht verlassen.
Für's Frontend ist der Check daher so richtig:

Code: Alles auswählen

if (rex_backend_login::createUser()) {
    $user = rex::getUser()->getName();
}

Re: getUser()

Verfasst: 4. Mai 2017, 14:31
von runstop64
Uh, wichtiger Hinweis. Ich habe es gleich mal in die Doku übernommen. -> https://github.com/redaxo/docs/blob/mas ... chaften.md

Re: getUser()

Verfasst: 4. Mai 2017, 15:08
von w.busch

Code: Alles auswählen

if (rex_backend_login::createUser()) { $user = rex::getUser()->getName(); }
Das war es. Danke.

Code: Alles auswählen

if (rex_backend_login::createUser()) { $login = rex::getuser()->getValue("login"); }
liefert dann auch den Inhalt der rex_user-Spalte "login".