获取用户名而不是用户ID - Yii2

时间:2018-04-19 15:15:51

标签: php yii2 yii2-advanced-app

在我的表单中,我想获取用户名而不是user_id,我得到"尝试获取非对象的属性",如何从用户表中正确获取用户名?

<?= $form->field($model, 'user_id')->textInput(
[
    //'value' => Yii::$app->user->getId(),
    'value' => $model->user->username,
    'readonly' => true,
    'style' => 'width:400px'
]
  )?>

这是此表格的模型

public function getUserType(){
  //Related model Class Name
  //related column name as select
  return $this->hasOne(User::className() ,['id' => 'user_id'])->select('type')->scalar();
}

1 个答案:

答案 0 :(得分:0)

您的代码中需要以下关系

public function getUser(){
    return $this->hasOne(User::className(), ['id' => 'user_id']);
}

您的代码应该有效。

我不认为您的操作是正确的,您正在使用包含您的用户名的用户ID进行绑定输入。提交表单时,Yii将尝试在您的user_id属性中加载用户名字符串。如果用户名和user_id不相同,则会导致验证错误。

问题在于您使用带有表单的输入来显示purpuse。你应该创建一个没有像

这样的表格的输入
$options = ['readonly' => true, 'style' => 'width:400px']    
Html::inputText( "username", $model->user->username, $options)

或者只是删除输入并在div中写入值。