Как выбранное значение DropDownList сохранить в базе с помощью Ajax в Yii2?
<?= $form->field($model, 'class')->dropDownList(\common\models\TieClass::getAll(), ['prompt' => 'Тип документа:']) ?>
Все это должно работать в экшене Update так что url сделал на него же
<?php
$this->registerJs(<<<JS
$('#launch-class').on('change', function(){
$.ajax({
url: '/',
type: 'POST',
data : $(this).val(),
success: function(res){
console.log(res);
},
error: function(){
alert('Error!');
}
});
});
JS
);
?>
Сам экшн
public function actionUpdate($id)
{
$model = $this->findModel($id);
if(isset($model->TieClass($model->class)->model)){
$composit = $model->TieClass($model->class)->model::findOne($id); //Проверьте пути в базе данных
$render = $model->TieClass($model->class)->form.'_form'; //Проверьте пути в базе данных
} else {
$composit = null;
$render = null;
}
if( Yii::$app->request->isAjax){
if($model->load(Yii::$app->request->post()) && $model->validate()) {
if($model->save(false)) {
return $this->redirect([$render, 'id' => $model->id]);
}
}
} elseif ($model->load(Yii::$app->request->post()) && $composit->load(Yii::$app->request->post())) {
$isValid = $model->validate();
$isValid = $composit->validate() && $isValid;
if ($isValid){
$model->save(false);
$composit->save(false);
return $this->redirect(['view', 'id' => $model->id]);
}
} else {
return $this->render('update', [
'model' => $model,
'composit' => $composit
]);
}
}
Запись значения полученного из Ajax должно попадать в $model->class