2010-11-18 16 views
1

Ich benutze Symfony und sfDoctrineGuardPlugin.Aktuellen angemeldeten Benutzer anzeigen

Wie zeige ich in einer Vorlage den Benutzernamen des aktuellen Benutzers an?

Ich habe versucht, $ this-> getUser() -> getUsername(), aber alles, was ich bekommen, ist die Fehlermeldung: "Aufruf der undefinierten Methode sfPHPView :: getUser"

Ich versuche, den Benutzernamen in einem layout.php angezeigt werden, nicht in einem bestimmten Modul/template

+0

Nun nach Ihrem Fehler $ hat dies keine Funktion namens getUser(), stellen Sie sicher, dass Sie es vom richtigen Objekt aufrufen. –

+0

Sie können Antworten auf diese Art von Fragen in der Dokumentation auf der Symfony-Projekt-Website finden – Kennethvr

Antwort

8

In einer Vorlage (Ansicht) verwenden $sf_user:

Für den Benutzernamen:

echo $sf_user->getUsername(); 

Für die ID:

echo $sf_user->getAttribute('user_id', null, 'sfGuardSecurityUser'); 

Oder in einer Aktion (Controller), können Sie tun, was Sie in Ihrer Frage tun:

$this->username = $this->getUser()->getUsername(); 

und dann $username wird Ihrer Ansicht nach Vorlage zur Verfügung.

Weitere Informationen zu Variablenverknüpfungen finden Sie unter template shortcuts in den Symfony-Dokumenten.

+0

Ich könnte falsch liegen, aber ich denke, es ist besser, $ sf_user nicht in einer Vorlage zu verwenden, können Sie alle benötigten Daten in einer Aktion besser abrufen Verwenden Sie dann eine Variable, die mit den Daten gefüllt ist, die in der Vorlage verwendet werden sollen. Nur um Business und Ansichten zu trennen. – Kennethvr

+1

Ich denke, es hängt davon ab, wie viel Logik Sie in der Ansicht tun werden - wenn Sie nur den Benutzernamen anzeigen, dann sehe ich keinen Schaden darin - es ist eine Variable, die Sie aushacken, keine zusätzliche Logik erforderlich (gleich wie echo $ myObj-> field; 'wirklich). Wenn Sie vor der Anzeige eine Manipulation an dieser Variablen vornehmen müssen, ist es besser, sie in der Aktion yes zu behalten. – richsage

+0

Ja, $ sf_user-> getUsername() hat es geschafft, danke. – Manu

0

Versuchen Sie Folgendes. Einer von ihnen kann arbeiten.

Verwandte Themen