Yii2如何使用pjax提交表单而不关闭bootstrap模式弹出窗口

时间:2017-11-29 12:16:06

标签: php jquery twitter-bootstrap yii2 yii2-advanced-app

我正在使用bootstrap模式登录页面。如果我在弹出窗口中提交表单将被关闭并显示响应。但是,不是关闭弹出窗口,而是想在同一个弹出窗口中显示响应。任何人都可以帮助我而不关闭弹出窗口来显示响应数据。

示例查看页面:

<?php Pjax::begin(); ?>
<?= Html::beginForm(['site/login'], 'post'); ?>
<?= Html::input('text', 'email', ['class' => 'form-control']) ?>
<?= Html::input('text', 'password', ['class' => 'form-control']) ?>
<?= Html::submitButton('Login', ['class' => 'btn btn-lg btn-primary', 'name' => 'login']) ?>
<?= Html::endForm() ?>

在控制器

if ($model->load(\Yii::$app->request->post())) {

     $authenticateUser = $model->login();
     if($authenticateUser == "Locked"){
        Yii::$app->session->setFlash('invalid', 'Your account has been locked. Please contact customer service for assistance');
                return $this->redirect('index');
     }else{
        Yii::$app->session->setFlash('success', 'Successfully logged in');
                 return $this->redirect('index');
     }
}

在Controller中,我尝试使用 renderAjax ,而不是重定向。但它没有按预期工作。

2 个答案:

答案 0 :(得分:0)

您需要通过添加自己的javascript处理程序beforeSubmit来强制通过ajax提交表单。见this link

答案 1 :(得分:0)

尝试以下

use yii\widgets\Pjax;
use yii\bootstrap\ActiveForm;

<?php Pjax::begin(); ?>
    <?php 
      $form = ActiveForm::begin([
        'id' => 'form-id',                   
        'options' => ['class' => 'form-horizontal','data-pjax' => true],
      ]);  
    ?>
        // Your fields
    <?php ActiveForm::end(); ?>
<?php Pjax::end(); ?>