在我的表单中,我想获取用户名而不是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();
}
答案 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中写入值。