Yii2成功模态窗口

时间:2017-02-27 12:39:34

标签: ajax yii2 modal-dialog

在视图中我有一个表单:

<?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');
    });

我想点击提交按钮后打开成功模态窗口。但现在没有任何反应。只需重新加载页面即可。怎么做我想要的?请解释如何在不重新加载页面的情况下执行此操作。

1 个答案:

答案 0 :(得分:0)

这可能不是最好的decidion,但我使用类myAjaxModalClass和一个简单的js代码,通过ajax和parse json结果提交该类的所有表单:

{结果:0,数据:&#39;新模态内容&#39;}

这允许我在没有页面重新加载的情况下加载带有验证错误的表单。您也可以添加结果状态以提交重定向。示例:

{结果:2,网址:&#39; http://yoursite.net&#39;}