yii2如何根据登录的用户从数据库中调用数据并以column/field形式显示?

How to call data from database based on user who login and display in form column/field in yii2?

我想根据登录应用程序的用户显示用户名,并将其放入字段表单(用户名)中

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

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

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

但我不知道如何将用户名放入文本输入

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

<?= $model->username = Yii::$app->user->identity->username; ?>
<?= $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()){
     $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]);
}