Как сохранить данные в БД из модального всплывающего окна в Yii2?

У меня есть простое представление, которое правильно сохраняет данные в БД, однако, когда я помещаю это представление во всплывающее окно Модал на другую страницу, оно не сохраняет никаких данных в БД, просто отображается Модал. Что еще нужно сделать, чтобы сохранить данные в БД из всплывающего окна? Спасибо

Это контроллер:

public function actionEditMyPopup()
{
$model = new MyPopupForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->insertEditMyPopup();
return $this->renderAjax('edit-mypopup', ['model' => $model]);
} else {
return $this->renderAjax('edit-mypopup', ['model' => $model]);
}
}

Это вид всплывающего окна:

<?php Pjax::begin(['enablePushState' => false]); ?>

<?php $form = ActiveForm::begin(['id' => 'edit-mypopup-form', 'options' => ['data-pjax' => true],]); ?>

<?= $form->field($model, 'attribute1') ?>

<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'edit-mypopup-button']) ?>
</div>

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

А у Модели есть объявление переменных и функция insertEditMyPopup (), которая вставляет данные в БД.

<?php
namespace app\models;
use Yii;
use yii\base\Model;
class EditMyPopupForm extends Model
{
public $attribute1;

public function rules()
{
return [
[['attribute1'], 'required'],
];
}

public function insertEditMyPopup()
{
//attributes is the name of the table
$a = new attributes();
$a->att1 = $this->attribute1;
$a->save();

}//end function
}//end class

0

Решение

Я преодолел проблему, добавив следующий код в файл js:

$('body').on("click", "form#edit-mypopup-form", function() {
var form = $(this);
if (form.find('.has-error').length) {
return false;
}
$.ajax({
url: form.attr('action'),
type: "POST",
data: form.serialize(),
success: function(results){

$(form).find('.results').html(results);

}
});
return false;
});
0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector