w.busch
Beiträge: 67
Registriert: 29. Nov 2011, 16:16
Wohnort: 38173 Dettum
Kontaktdaten: Website

getUser()

4. Mai 2017, 10:56

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?
Wolfgang Busch

Benutzeravatar
runstop64
Beiträge: 342
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: getUser()

4. Mai 2017, 11:47

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.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
Gregor.Harlan
Entwickler
Beiträge: 1130
Registriert: 4. Jun 2007, 10:35
Wohnort: Frankfurt am Main

Re: getUser()

4. Mai 2017, 13:27

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();
}
Friends Of REDAXO: Gemeinsame REDAXO-Entwicklung!

Benutzeravatar
runstop64
Beiträge: 342
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: getUser()

4. Mai 2017, 14:31

Uh, wichtiger Hinweis. Ich habe es gleich mal in die Doku übernommen. -> https://github.com/redaxo/docs/blob/mas ... chaften.md
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

w.busch
Beiträge: 67
Registriert: 29. Nov 2011, 16:16
Wohnort: 38173 Dettum
Kontaktdaten: Website

Re: getUser()

4. Mai 2017, 15:08

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".
Wolfgang Busch

Zurück zu „Templates/Navigationen [R5]“