@thepeachからの回答がうまくいく間に、実際にはユーザーコンポーネントを拡張して独自の関数を追加することができ、最初にしようとしていた通りYii::$app->user->something
で取得できます。
私はこのようなことを最初から拡張したいので、コードをリファクタリングすることなくカスタム機能を追加する準備はできています。それは後でそれを変更したので、物事を一方的にやってしまい、そして100のコードを修正する必要があります。
まず、お使いの設定でユーザーコンポーネントクラスを定義します。
'components' => [
'user' => [
'class' => 'app\components\User', // extend User component
],
],
次に、あなたのcomponents
ディレクトリにUser.php
を作成します。このディレクトリを作成していない場合は、アプリケーションルートに作成します。
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;
}
}
今、あなたはYii::$app->user->something
を通じてこれらにアクセスすることができます。例えば
、あなたのビューのいずれかでこれを入れて、ブラウザでページにアクセスします。
<?= \Yii::$app->user->username ?>
私は深さでこのビット以上をカバーし、より詳細な回答hereを、書きました。
あなたは '\ Yii :: $ app-> user-> identity'の代わりに' $ this-> identity'を使うことができます。 – vher2