我有一个简单的视图,它正确地将数据保存到数据库中,但是当我将该视图放入另一个页面的模态弹出框中时,它不会将任何数据保存到数据库中,而模态只是显示。还有什么需要做的才能将数据从弹出窗口保存到数据库中?感谢
这是控制器:
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 :(得分: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;
});