webentwicklung-frage-antwort-db.com.de

Rufen Sie den Namen des Benutzers in yii2 ab

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.

22
Patricia Beier

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.

40
Mr Peach

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.

7
Wade

Einfach nur verwenden:

<?= \Yii::$app->user->identity->username ?>
0
Rizesky