Hallo, lieber Forum Benutzer. Wir haben in letzter Zeit festgestellt, dass die Kommunikation via https://slack.com/ viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen Möglichkeiten der Kommunikation ist das Forum ein wenig eingeschlafen und weniger Nutzer benutzen das Forum aktiv (trotzdem lohnt es sich evtl. hier nach Lösungen zu suchen oder seine Frage zu stellen).

Wir empfehlen bei Fragen/Problemen aktuell die Frage (zusätzlich) im Slack zu stellen. Dort sind viele kompetente REDAXO Benutzer aktiv und beantworten gerne (Anfänger)Fragen.

Selbst einladen kannst Du dich hier: http://redaxo.org/slack/

Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
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: 353
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: 353
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]“