Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: http://redaxo.org/slack/
w.busch
Beiträge: 68
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: 369
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: 369
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: 68
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]“