Здравствуйте, нужен совет... Наверное даже разъяснение...
Руководствовался
этой статьей
При таком представлении _form:
foreach ($tableFromTemplate as $index => $setting) {
echo $form->field($setting, '[$index]id_table')->dropDownList(
ArrayHelper::map($tableDesc, 'id', 'tag_table_desc')
)->label(false);
в foreach в представлении _form при построении dom ключ передается как [$index]... Соответственно я не могу сохранить измененные данные....
foreach ($tableFromTemplate as $index => $setting) {
echo $form->field($setting, "[$index]id_table")->label($setting->id_table);
} ?>
А в таком виде, foreach без реализации выпадающего списка через dropDownList, все работает, все сохраняется, ключ [$index]принимает значения и в dom передается в виде [0],[1]...
Контроллер
public function actionUpdate($id)
{
$model = $this->findModel($id);
$tableDesc =TagTable::find()->asArray()->all();//для массива имен таблиц
$idTemplate = $model->id;
$tableFromTemplate = TableFromTemplate::find()->where(['id_template' => $idTemplate])->indexBy('id')->all();//массив моделей для редактируемого шаблона
if (Model::loadMultiple($tableFromTemplate, Yii::$app->request->post()) && Model::validateMultiple($tableFromTemplate)) {
foreach ($tableFromTemplate as $setting) {
$setting->save(false);
}
return $this->redirect(['view', 'id' => $model->id]);
}
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,
'category' => TemplateCategory::find()->all(),
'tableDesc' => $tableDesc,
'tableFromTemplate' => $tableFromTemplate
]);
}
}