如何根据在yii2中登录并显示在表单列/字段中的用户从数据库中调用数据?

时间:2018-11-09 06:43:36

标签: php yii2 yii2-advanced-app

我想显示基于登录到应用程序的用户的用户名并将其放在字段表单(用户名)中

这是我的表单的代码
       <?= $form->field($model, 'username')->textInput(['maxlength' => true])?>

这是用于根据登录用户调用用户名的代码

<?=Yii::$app->user->identity->username ?>

但我不知道如何将用户名放在textinput内

2 个答案:

答案 0 :(得分:1)

您应该在传递给ActiveFrom小部件的模型对象中设置必要的值:

<?= $model->username = Yii::$app->user->identity->username; ?>
<?= $form->field($model, 'username')->textInput(['maxlength' => true]); ?>

答案 1 :(得分:0)

将模型数据加载到控制器中是一种好习惯。

在您的TestController中

public function actionTest(){
  $model = new User();
  $model->username = Yii::$app->getUser()->getIdentity()->username;
  if($model->load(Yii::$app->getRequest()->post()){
     $model->save();
     // and ...
  }

  return $this->render('view', ['model'=>$model]);
}

在您的视图文件中

<?= $form->field($model, 'username')->textInput(['maxlength' => true])?>

在这种情况下,如果要防止用户更改用户名的值,请将控制器代码更改为以下内容:

public function actionTest(){
  $model = new User();
  $model->username = Yii::$app->getUser()->getIdentity()->username;
  if($model->load(Yii::$app->getRequest()->post()){
     // Overwrite user input.
     $model->username = Yii::$app->getUser()->getIdentity()->username;
     $model->save();
     // and ...
  }     
  return $this->render('view', ['model'=>$model]);
}