Ох, не верится мне, что в Гугле Вы подробно искали)) Но, дело житейское.
Идея:
1. В контроллере загружаем данные по пользователю в объект модели. Например:
$model = User::findOne( $someUserId ) ;
2. Передаем этот объект во вью, где при помощи виджета выводим список всех нужных полей.
<?php
$form = ActiveForm::begin([
'id' => 'about-form',
'method' => 'post',
]); ?>
<?= $form->field($model, 'name_first') ?>
<?= $form->field($model, 'name_middle')?>
<button class="btn btn-lg btn-primary" type="submit">OK</button>
<?php ActiveForm::end(); ?>
3. Action формы с методом POST направляем на тот же контроллер и в нем проверяем, каким методом пришел запрос, проводим валидации и т.д. - после чего сохраняем:
if( \Yii::$app->getRequest()->isPost ){
if( $model->load( \Yii::$app->request->post() ) && $model->validate() ){
$model->save( false ) ;
}
}
Таким образом типовой метод в контроллере может иметь вид:
public function actionIndex()
{
// загружаем данные по ID
$model = \app\models\User::findOne( $this->userId );
// если POST - значит идет сохранение с формы
if( \Yii::$app->getRequest()->isPost ){
// если аттрибуты загрузились и отвалидировались - можно сохранять
if( $model->load( \Yii::$app->request->post() ) && $model->validate() ){
$model->save( false );
}
}
// передаем объект во вью (если GET - исходные, если POST - обновленные)
return $this->render('index', [
'model' => $model
]);
}