Wie kann ich den Namen des angemeldeten Benutzers in yii2 erhalten? Ich kann die Benutzer-ID mit erhalten
Yii::$app->user->id;
und ich weiß, dass ich den Namen in der Datenbank finden konnte, aber ich möchte einen direkten Weg ... Die Namensspalte in der Datenbank hat den Namen "Benutzername", aber
Yii::$app->user->username;
funktioniert nicht und
Yii::$app->user->name;
funktioniert auch nicht.
Bei der Anmeldung werden die Benutzerinformationen in der Variable Yii::$app->user->identity
gespeichert.
Weitere Informationen finden Sie in der User Authentication-Dokumentation im offiziellen Handbuch.
Während die Antwort von @thepeach funktioniert, können Sie die Benutzerkomponente tatsächlich erweitern und eigene Funktionen hinzufügen, sodass Sie sie wie zuvor über Yii::$app->user->something
erhalten.
Ich möchte solche Dinge von Anfang an erweitern, also bin ich bereit, benutzerdefinierte Funktionen hinzuzufügen, ohne Code umgestalten zu müssen. Es ist scheiße, Dinge auf eine Weise zu tun, dann müssen Sie zurückgehen und 100 Code-Stellen korrigieren, da Sie ihn später geändert haben.
Definieren Sie zunächst eine Benutzerkomponentenklasse in Ihrer Konfiguration:
'components' => [
'user' => [
'class' => 'app\components\User', // extend User component
],
],
Erstellen Sie dann User.php
in Ihrem components
-Verzeichnis. Wenn Sie dieses Verzeichnis noch nicht erstellt haben, erstellen Sie es in Ihrem App-Stammverzeichnis.
User.php
<?php
namespace app\components;
use Yii;
/**
* Extended yii\web\User
*
* This allows us to do "Yii::$app->user->something" by adding getters
* like "public function getSomething()"
*
* So we can use variables and functions directly in `Yii::$app->user`
*/
class User extends \yii\web\User
{
public function getUsername()
{
return \Yii::$app->user->identity->username;
}
public function getName()
{
return \Yii::$app->user->identity->name;
}
}
Jetzt können Sie über Yii::$app->user->something
auf diese zugreifen.
Fügen Sie dies beispielsweise in eine Ihrer Ansichten ein und rufen Sie die Seite in Ihrem Browser auf:
<?= \Yii::$app->user->username ?>
Ich habe eine ausführlichere Antwort here geschrieben, die dies etwas ausführlicher behandelt.
Einfach nur verwenden:
<?= \Yii::$app->user->identity->username ?>