Yii2: 2 формы с одной и той же кнопкой

Я хочу создать 2 записи одной таблицы с одной и той же кнопкой.
Таблица является:

CREATE TABLE `consecuencia` (
`ID_CONSECUENCIA` int(11) NOT NULL AUTO_INCREMENT,
`VALOR_CAT_CONSECUENCIA` varchar(1024) NOT NULL,
`ESTADO` varchar(3) NOT NULL,
PRIMARY KEY (`ID_CONSECUENCIA`)
)

И это мой взгляд _form.php

 <?php $form = ActiveForm::begin(); ?>
//FIRST RECORD
<?= $form->field($model, 'VALOR_CAT_CONSECUENCIA')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'ESTADO')->textInput(['maxlength' => true]) ?>
//SECOND RECORD
<?= $form->field($model1, 'VALOR_CAT_CONSECUENCIA')->textInput(['maxlength' => true]) ?>
<?= $form->field($model1, 'ESTADO')->textInput(['maxlength' => true]) ?>

<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

это мой actionCreate моего контроллера:

public function actionCreate()
{
$model = new Consecuencia();
$model1 = new Consecuencia();
if ($model->load(Yii::$app->request->post()) && $model1->load(Yii::$app->request->post())
&& $model->save() && $model1->save()) {
return $this->redirect(['view', 'id' => $model->ID_CONSECUENCIA]);
} else {
return $this->render('create', [
'model' => $model,
'model1' => $model1,
]);
}
}

Мне нужен способ установить 2 модели внутри submitButton потому что, когда я вставляю свои поля, записи дублируются, в этом примере я вставляю:

  • первое значение (VALOR_CAT_CONSECUENCIA): 1
  • второе значение (ЭСТАДО): 1
  • thirtvalue (VALOR_CAT_CONSECUENCIA) 78
  • четвертое значение (ЭСТАДО): 78

введите описание изображения здесь

2

Решение

Вы должны использовать концепцию табличной формы

Ваш контроллер

use yii\base\Model;

public function actionCreate()
{
for( $i = 0;$i <2;++$i){
$models[] = new Consecuencia();
}
if (Model::loadMultiple($models,yii::$app->request->post() ) &&
Model::validateMultiple($models)){
foreach($models as $model){
$model->save();
}
return $this->redirect(['view', 'id' => $model->ID_CONSECUENCIA]);
} else {
return $this->render('create', [
'models' => $models
]);
}
}

Ваш взгляд

<?php $form = ActiveForm::begin(); ?>

<?php foreach($models as $key => $model) {

<?= $form->field($model, "[$key]VALOR_CAT_CONSECUENCIA")->textInput(['maxlength' => true]) ?>
<?= $form->field($model, "[$key]ESTADO")->textInput(['maxlength' => true]) ?>


<?php } ?>

<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>
1

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

Других решений пока нет …