I have two tables tbl_officials_info and tbl_officials_political_info and I created models for them. I want to save data in that two tables with dynamic form widget in Yii2. This is my button
<?php DynamicFormWidget::end(); ?>
<?= Html::submitButton($officialsinfo->isNewRecord && $tbl_official_politicalInfo->isNewRecord ? 'Create' : 'Update', ['class' => 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
I tried googling some ideas but I don’t get any results. Please help me. This is my _form.php view I have nested loop for 2 dynamicform array model the $model and $tbl_officials_political_info
<div class="customer-form">
<?php $form = ActiveForm::begin(['id' => 'dynamic-form']); ?>
<div class="padding-v-md">
<div class="line line-dashed"></div>
</div>
<?php DynamicFormWidget::begin([
'widgetContainer' => 'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_]
'widgetBody' => '.container-items', // required: css class selector
'widgetItem' => '.item', // required: css class
'limit' => 5, // the maximum times, an element can be cloned (default 999)
'min' => 1, // 0 or 1 (default 1)
'insertButton' => '.add-item', // css class
'deleteButton' => '.remove-item', // css class
'model' => $model[0],
'model' => $tbl_official_politicalInfo[0],
'formId' => 'dynamic-form',
'formFields' => [
'firstname',
'middlename',
'lastname',
'suffix_id',
'birthday',
'gender_id',
'gov_position_id'
],
]); ?>
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-user"></i> Add Official
<button type="button" class="pull-right add-item btn btn-success btn-xs"><i class="fa fa-plus"></i> Add Official</button>
<div class="clearfix"></div>
</div>
<div class="panel-body container-items"><!-- widgetContainer -->
<?php foreach ($model as $index => $officialsinfo): ?>
<?php foreach ($tbl_official_politicalInfo as $key => $tbl_official_politicalInfo): ?>
<div class="item panel panel-default"><!-- widgetBody -->
<div class="panel-heading">
<span class="panel-title-address">Official: <?= ($index + 1) ?></span>
<button type="button" class="pull-right remove-item btn btn-danger btn-xs"><i class="fa fa-minus"></i></button>
<div class="clearfix"></div>
</div>
<div class="panel-body">
<?php
// necessary for update action.
/* if (!$model->isNewRecord) {
echo Html::activeHiddenInput($model, "[{$index}]id");
}else if(!$tbl_official_politicalInfo->isNewRecord){
echo Html::activeHiddenInput($tbl_official_politicalInfo, "[{$index}]id");
}*/
?>
<?= $form->field($officialsinfo, "[{$index}]firstname")->textInput() ?>
<?= $form->field($officialsinfo, "[{$index}]middlename")->textInput() ?>
<?= $form->field($officialsinfo, "[{$index}]lastname")->textInput() ?>
<?=
$form->field($officialsinfo, "[{$index}]suffix_id")->widget(Select2::classname(), [
'hideSearch' => true,
'data' => $suffix,
'options' => ['placeholder' => 'Select Suffix', 'required'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
<?=
$form->field($officialsinfo, "[{$index}]birthday")->widget(DatePicker::classname(), [
'options' => ['placeholder' => 'Enter birth date ...'],
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd'
]
]);
?>
<?=
$form->field($officialsinfo, "[{$index}]gender_id")->widget(Select2::classname(), [
'hideSearch' => true,
'data' => $gender,
'options' => ['placeholder' => 'Select Sex'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
<?=
$form->field($officialsinfo, "[{$index}]gov_position_id")->widget(Select2::classname(), [
'hideSearch' => true,
'data' => $govpos,
'options' => ['class' => 'gov_position_id', 'placeholder' => 'Select Position'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
<?php
$provinceList = \yii\helpers\Url::to(['tblofficialsinfo/province-list']);
echo $form->field($tbl_official_politicalInfo, 'region_id')->widget(
Select2::classname(),
[
'data' => $regions,
'options' => ['placeholder' => 'Select the region', 'required'],
'pluginOptions' => [
'allowClear' => true
],
'pluginEvents' => [
'select2:select' => '
function(){
var vals = this.value;//value ng region_id
$.ajax({
url: "' . $provinceList . '",
data: {regCode:vals}
}).done(function(result) {
$(".provinceClass").html("").select2({ data:result, theme:"krajee", width:"100%", allowClear: true,});
$(".provinceClass").select2("val","");
});
}'
]
]
);
?>
<?php
$citymun = \yii\helpers\Url::to(['tblofficialsinfo/citymun-list']);
echo $form->field($tbl_official_politicalInfo, "[{$key}]province_id")->widget(Select2::classname(), [
'data' => $provinceAll,
'options' => ['placeholder' => 'Select ...', 'class' => 'provinceClass', 'required'],
'pluginOptions' => ['allowClear' => true],
'pluginEvents' => [
'select2:select' => '
function(){
var vals = this.value;
$.ajax({
url: "' . $citymun . '",
data: {provCode:vals}
}).done(function(result) {
//$("#citymunCode").prop("disabled", false); //
$(".citymunClass").html("").select2({ data:result, theme:"krajee", width:"100%", allowClear: true,});
$(".citymunClass").select2("val","");
});
}'
]
]);
?>
<div id="citymunField">
<?=
$form->field($tbl_official_politicalInfo, "[{$key}]citymun_id")->widget(Select2::classname(), [
'data' => $citymunall,
'options' => ['placeholder' => 'Select ...', 'class' => 'citymunClass', 'required'],
'pluginOptions' => ['allowClear' => true]
]);
?>
</div>
<?=
$form->field($tbl_official_politicalInfo, "[{$key}]political_party_id")->widget(Select2::classname(), [
'data' => $political_parties,
'options' => ['placeholder' => 'Select Political Party'],
'pluginOptions' => [
'allowClear' => true
],
]);
?>
<?= $form->field($tbl_official_politicalInfo, "[{$key}]proclamation_date")->widget(DatePicker::class, [
'options' => ['placeholder' => 'Enter Proclamation Date ...'],
'type' => DatePicker::TYPE_COMPONENT_APPEND,
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd'
]
])
?>
</div>
</div>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
</div>
<?php DynamicFormWidget::end(); ?>
<div class="form-group">
<?= Html::submitButton($officialsinfo->isNewRecord && $tbl_official_politicalInfo->isNewRecord ? 'Create' : 'Update', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>