У меня проблема с сохранением полей таблиц, отображаемых три раза. Не могу сохранить уникальное значение, сохраняемое в текстовых полях. Пожалуйста, кто-нибудь направит меня к правильному ответу, пожалуйста.
Посмотреть код:
<h2>List of Documents</h2>
<table class="table">
<?php foreach($formlist as $item) { ?>
<tr>
<td><?= $form->field($model, '['.$item->id.']value')->radioList(['yes'=>' yes','no'=>' no'])->label($item['title']); ?></td>
</tr>
<?php } ?>
</table>
Код контроллера:
public function actionCreate()
{
$model = new Form();
$forminfo = new Forminfo();
$forminfo->id = $model->forminfo_id;
/*$sql = 'SELECT * FROM formlist ORDER BY id ASC';
$db = Yii::$app->db;
$formlist = $db->createCommand($sql)->queryAll();*/
// same of ->
$formlist = Formlist::find()->orderBy(['id'=>SORT_ASC])->all();
if ($forminfo->load(Yii::$app->request->post()) && $model->load(Yii::$app->request->post())) {
$forminfo->save(false); // skip validation as model is already validated
$model->forminfo_id = $forminfo->id; // no need for validation rule on user_id as you set it yourself
$model->save(false);
Yii::$app->getSession()->setFlash('success', 'You have successfully saved your data.');
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'forminfo' => $forminfo,
'formlist' => $formlist,
]);
}
}
Для доступа к табличному вводу вы должны использовать loadMultiple('yourModel')
или петля на
$post= Yii::$app->request->post());
foreach ($post['your_model'] as $key => $myModel) {
// $myModel contain the current model
}
это руководство yii2 может быть полезным http://www.yiiframework.com/doc-2.0/guide-input-tabular-input.html
Других решений пока нет …