Доброе утро, Максим.
Да как же так, ну что же такое? В документации всё же расписано)))
Пусть будет какая-то модель, например Users. Нужно в форме создать нескольких пользователей и записать в базу.
Контролер:
public function actionCreate()
{
$count = count(Yii::$app->request->post('Users', [])); // получаем количество переданных данных.
$users = [new Users()]; // создаём один экземпляр модели, по умолчанию в представлении будет создаваться всегда одно поле.
for(i = 1; $i < $count; $i++){
$users[] = new Users();
}
if(Model::loadMultiple($users, Yii::$app->request->post('Users')) && Model::validateMultiple($users)){
foreach($users as $user){
$user->save(false); // валидировать уже не надо, так как данные проверены Model::validateMultiple()
}
return $this->redirect('куда_надо_сделать_redirect');
}
retun $this->render('create', ['users' => $users]); // передаём в представление массив моделей Users, гарантированно выводится одна модель.
}
В представлении формы:
foreach($users as $key => $user)
{
echo $form->field($user, "[$key]name")->textInput();
}
Всё!!! Больше ничего не надо! Ну сколько же раз уже надо это Вам объяснять?)))))
И в документации это всё расписано. Сохранение/обновление моделей ничем не отличаются для create/update.
Единственное отличие в том, как Вы получаете массив моделей.
P.S.
Если надо сохранить две разные модели, одна из которых будет табличным вводом, то код и в create и в update чуть изменится.
$model = new Model();
// ******************
if($model->load(Yii::$app->request->post()) && Model::loadMultiple($users, Yii::$app->request->post('Users')) && Model::validateMultiple($users)){
$model->save();
foreach($users as $user){
$user->save(false); // валидировать уже не надо, так как данные проверены Model::validateMultiple()
}
return $this->redirect('куда_надо_сделать_redirect');
}