Cant save in data in database using dynamic form in one model
devansh-gtu opened this issue · comments
devansh-gtu commented
Controller:
public function actionCreate()
{
$model = new UniversityCourseList;
$Course= [new UniversityCourseList];
$countries = ArrayHelper::map(Country::getAllCountries(), 'id', 'name');
if ($this->request->isPost)
{
if ($model->load($this->request->post()))
{
echo "hiii";
die();
$Course = Model::createMultiple(UniversityCourseList::classname());
Model::loadMultiple($Course, Yii::$app->request->post());
// validate all models
$valid = $model->validate();
$valid = Model::validateMultiple($Course) && $valid;
if ($valid)
{
$transaction = \Yii::$app->db->beginTransaction();
try {
if ($flag = $model->save(false)) {
foreach ($Course as $Course) {
$Course->customer_id = $model->id;
if (!($flag = $Course->save(false))) {
$transaction->rollBack();
break;
}
}
}
if ($flag) {
$transaction->commit();
return $this->redirect('index');
}
} catch (Exception $e) {
$transaction->rollBack();
}
}
}
}
// if ($model->load(Yii::$app->request->post()))
// {
// $Course = Model::createMultiple(UniversityCourseList::classname());
// Model::loadMultiple($Course, Yii::$app->request->post());
// // validate all models
// $valid = $model->validate();
// $valid = Model::validateMultiple($Course) && $valid;
// if ($valid)
// {
// $transaction = \Yii::$app->db->beginTransaction();
// try {
// if ($flag = $model->save(false)) {
// foreach ($Course as $Course) {
// $Course->customer_id = $model->id;
// if (!($flag = $Course->save(false))) {
// $transaction->rollBack();
// break;
// }
// }
// }
// if ($flag) {
// $transaction->commit();
// return $this->redirect('index');
// }
// } catch (Exception $e) {
// $transaction->rollBack();
// }
// }
// }
return $this->render('create', [
'model' => $model,
'courseType' => $this->getOthers('course_type'),
'languages' => $this->getOthers('languages'),
'intake' => $this->getOthers('intake'),
'durationType' =>$this->getOthers('duration_type'),
'university' => $this->getUniversityList(),
'countries' => $countries,
'degree' => Degree::getAllDegrees(),
'majors' => Majors::getAllMajors(),
'degreeLevels' => DegreeLevel::getAllDegreeLevels(),
'Course' => (empty($Course)) ? [new UniversityCourseList] : $Course,
]);
}
form:
registerJsFile('@web/js/programs.js'); $this->registerJsFile('@web/libs/select2/select2.full.min.js'); $this->registerCssFile('@web/libs/select2/select2.min.css'); $year=[0=>' ',1=>'Janurary',3=>'Feburary',3=>'March',4=>'April',5=>'May',6=>'June',7=>'July',8=>'August',9=>'September',10=>'October',11=>'November',12=>'December']; ?>
'dynamic-form']); ?>
<script>
function updateAdmission(element) {
console.log(element);
var degree = element.value;
if (degree !== null && degree !== undefined && degree !== "") {
$.ajax({
url: '/backend/web/index.php?r=university/dependent-courses',
method: 'POST',
data: {
'degree': degree,
'university': "id ?>"
},
success: function(response) {
response = JSON.parse(response);
if(response.status == "success") {
var row = element.id.split('-')[1];
var select = $('#universityadmission-' + row + '-course_id');
select.empty();
var data = response.result;
for(var i = 0; i < data.length; i++) {
select.append( ''
+ data[i].name
+ '' );
}
}
},
error: function(){
console.log('error', arguments);
}
});
}
}
</script><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
'min' => 1, // 0 or 1 (default 1)
'insertButton' => '.add-item', // css class
'deleteButton' => '.remove-item', // css class
'model' => $Course[0],
'formId' => 'dynamic-form',
'formFields' => [
'name',
'university_id',
'degree_id',
'degree_level_id',
'intake',
'deadline1',
'intake2',
'deadline2',
'placement_fess',
'a_level',
'ib_level',
'fees_international_students',
'type',
],
]); ?>
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-envelope"></i>
<button type="button" class="pull-right add-item btn btn-success btn-xs"><i class="fa fa-plus"></i> Add Patner University</button>
<div class="clearfix"></div>
</div>
<div class="panel-body container-items"><!-- widgetContainer -->
<?php foreach ($Course as $index => $Course): ?>
<div class="item panel panel-default"><!-- widgetBody -->
<div class="panel-heading">
<span class="panel-title-address">Patner University: <?= ($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 (!$Course->isNewRecord) {
echo Html::activeHiddenInput($Course, "[{$index}]id");
}
?>
<div class="row">
<div class="col-sm-6">
<?= $form->field($Course, "[{$index}]name")->textInput(['maxlength' => true]) ?>
</div>
<div class="col-sm-6">
<?= $form->field($Course, "[{$index}]university_id")->dropDownList($university, ['prompt' => 'Select University']) ?>
</div>
<div class="col-sm-6">
<?= $form->field($Course, "[{$index}]degree_id")->dropDownList($degree, ['prompt' => 'Select Discipline','id'=>'degree_id']) ?>
</div>
<div class="col-sm-6">
<?= $form->field($Course, "[{$index}]degree_level_id")->dropDownList($degreeLevels, ['prompt' => 'Select Degree']) ?>
</div>
</div><!-- .row -->
<div class="row">
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]intake")->dropDownList($year)?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]deadline1")->widget(DatePicker::classname(), ['options' => ['placeholder' => 'Select date'],'pluginOptions' => ['format' => 'mm-dd','todayHighlight' => true]]);?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]intake2")->dropDownList($year) ?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]deadline2")->widget(DatePicker::classname(), ['options' => ['placeholder' => 'Select date'],'pluginOptions' => ['format' => 'mm-dd','todayHighlight' => true]]);?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]placement_fess")->textInput(['maxlength' => true]) ?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]a_level")->textInput(['maxlength' => true]) ?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]ib_level")->textInput(['maxlength' => true]) ?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]fees")->textInput(['maxlength' => true]) ?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]fees_international_students")->textInput(['maxlength' => true]) ?>
</div>
<div class="col-sm-4">
<?= $form->field($Course, "[{$index}]type")->dropDownList($courseType,['prompt' => 'Select Type']) ?>
</div>
</div><!-- .row -->
</div>
</div>
<?php endforeach; ?>
</div>
<?php DynamicFormWidget::end(); ?>
</div>
<div class="form-group">
<?= Html::submitButton($Course->isNewRecord ? 'Create' : 'Update', ['class' => 'btn btn-primary']) ?>
</div>