在Yii2

时间:2018-03-15 08:20:46

标签: yii2 yii2-advanced-app

我需要为用户身份分配一个新变量,如

 Yii::$app->user->identity->staff_name = 'myName';

我在identityClass中添加了public $staff_name;,通常是common\models\User,但在我的情况下是common\models\Person

但是当我打印Yii::$app->user->identity

Yii::$app->user->identity->staff_name value is blank.

为何空白?

1 个答案:

答案 0 :(得分:1)

Steps to follow

  • 您应该将公共属性staff_name添加到safe规则

见下文

public function rules(){
       return[
            [['staff_name'],'safe']
       ] ;
}
  • 如果您使用 dektrium/yii2-user ,请使用以下方式添加到父规则

添加到您的Person模型

public function rules() {
        return array_merge (parent::rules (), [ 'staff_nameSafe' => ['staff_name' , 'safe' ] ] );
    }
  • 然后您需要手动加载此属性,它不会像其他模型属性一样自动获取值,因此在afterFind模型中使用Person,如下所示。

注意:我正在使用SAMPLE STAFF NAME的硬编码字符串staff_name根据您的需要进行调整

public function afterFind() {
    parent::afterFind ();
    $this->staff_name="SAMPLE STAFF NAME";
}

Test

现在您可以使用print_r(Yii::$app->user->identity->staff_name);,它将打印名称

SAMPLE STAFF NAME