Während die Antwort von @thepeach funktioniert, können Sie die Benutzerkomponente tatsächlich erweitern und Ihre eigenen Funktionen hinzufügen, so dass Sie sie über Yii::$app->user->something
erhalten können, wie Sie es ursprünglich versuchten.
Ich möchte Dinge wie diese von Anfang an erweitern, also bin ich bereit, benutzerdefinierte Funktionalität hinzuzufügen, ohne Code umzuformen. Es nervt, Dinge auf eine Art zu tun, dann müssen Sie zurückgehen und 100 Punkte Code reparieren, weil Sie es später geändert haben.
zunächst eine Benutzerkomponentenklasse in der Config definieren:
'components' => [
'user' => [
'class' => 'app\components\User', // extend User component
],
],
Dann User.php
in Ihrem components
Verzeichnis erstellen. 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 diese durch Yii::$app->user->something
zugreifen.
Zum Beispiel setzen diese in einem Ihrer Ansichten und Zugriff auf die Seite in Ihrem Browser:
<?= \Yii::$app->user->username ?>
Ich schrieb eine ausführlichere Antwort here, die diese in der Tiefe etwas mehr abdeckt.
Sie könnten einfach '$ this-> identity' anstelle von '\ Yii :: $ app-> user-> identity 'verwenden. – vher2