Yii2成功模式窗口
问题描述:
鉴于我有一个表格:Yii2成功模式窗口
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'name')->textInput(['maxlength' => true, 'placeholder' => 'Name'])->label(false) ?>
<?= $form->field($model, 'phone')->textInput(['maxlength' => true, 'placeholder' => 'Phone'])->label(false) ?>
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
控制器是:
if ($model->load(Yii::$app->request->post()) && $model->save()) {
\Yii::$app->session->setFlash('success', 'Created');
}
return $this->redirect(Yii::$app->request->referrer);
然后在视图中,我把一个模式:
<?php if (Yii::$app->session->hasFlash('success')) :?>
<!-- <div class="container">
<?= Yii::$app->session->getFlash('success', null, true) ?>
</div> -->
<div class="modal hide fade" id="myModal">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<p><?= Yii::$app->session->getFlash('success', null, true) ?></p>
</div>
<div class="modal-footer">
<a href="#" class="btn">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
</div>
<?php endif ;?>
和JS代码:
$(window).load(function(){
$('#myModal').modal('show');
});
我想点击提交按钮后打开成功模式窗口。但现在没有任何反应。只需重新加载页面。我想要怎么做?并请解释如何做到这一点,而无需重新加载页面。
答
这可能是没有最好的decidion,但我用类myAjaxModalClass和一个简单的JS代码,即通过AJAX与该类提交所有形式和解析JSON结果:
{结果:0,数据:'新模式内容'}
这使我可以加载与验证错误的形式没有页面重新加载。您也可以添加您的结果状态以提交重定向。示例:
{result:2,url:'http://yoursite.net'}