Как вызвать данные из базы данных в зависимости от пользователя, который авторизуется и отображается в столбце / поле формы в yii2? - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу отобразить имя пользователя в зависимости от пользователя, который вошел в приложение и поместил его в форму поля (имя пользователя)

это код для моей формы
<?= $form->field($model, 'username')->textInput(['maxlength' => true])?>

это код для вызова имени пользователя на основе имени пользователя

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

но я не знаю, как поместить имя пользователя внутри textinput

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Хорошей практикой является загрузка данных модели в контроллер.

В вашем 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]);
}
0 голосов
/ 09 ноября 2018

Необходимо установить необходимое значение в объекте модели, который передается виджету ActiveFrom:

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