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

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

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

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

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

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

0

Решение

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

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

Другие решения

Рекомендуется загружать данные модели в контроллер.

В вашем 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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector