javascript - 模态窗口 yii2 中的 Ajax 验证数据

标签 javascript php ajax yii2 pjax

我的主视图中有模态窗口

<?php
        Modal::begin([
            'header' => 'Log in or register or restore password',
            'id' => 'modal',
            'size' => 'modal-lg',
        ]);
        echo "<div id='modalContent'></div>";
        Modal::end();
    ?>

我还有其他 View 可以在主视图的模态窗口中呈现它

<div class="row">
    <div class="col-lg-5">
        <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>

            <?= $form->field($login_model, 'username')->textInput() ?>

            <?= $form->field($login_model, 'password')->passwordInput() ?>

            <div class="form-group">
                <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button', 'data-pjax' => 1]) ?>
            </div>

        <?php ActiveForm::end(); ?>
    </div>
</div>

使用这个

\frontend\assets\OverviewAsset::register($this);

我注册了我的js代码

$(document).ready(function() {
$(function() {
    var id_user_tag = 'id_user';

    $(document).on('click','[' + id_user_tag + ']', function () {
        var id_user = this.getAttribute(id_user_tag);
        $.ajax({
            url: '/client/is-full-page-accessed',
            type: 'post',
            data: {
                id_user: id_user
            },
            success: function (response) {
                if(response) {
                    window.location = 'full-page?id_user=' + id_user;
                } else {
                    $.get(
                        '/client/log-in',
                        function (data) {
                            $('#modal').modal('show')
                                .find('#modalContent')
                                .html(data);
                        }
                    );
                }
            }
        });
    });
});});

我有 Controller

public function actionLogIn()
{
    if (!\Yii::$app->user->isGuest) {
        return $this->goHome();
    }

    $password_reset_request_model = new PasswordResetRequestForm();
    if ($password_reset_request_model->load(Yii::$app->request->post()) && $password_reset_request_model->validate()) {
        if ($password_reset_request_model->sendEmail()) {
            Yii::$app->session->setFlash('success', 'Check your email for further instructions.');

            return $this->goHome();
        } else {
            Yii::$app->session->setFlash('error', 'Sorry, we are unable to reset password for email provided.');
        }
    }

    $login_model = new LoginForm();
    if ($login_model->load(Yii::$app->request->post()) && $login_model->login()) {
        return $this->goBack();
    } else {
        $model['login'] = $login_model;
        return $this->renderAjax('log-in', ['login_model' => $login_model, 'password_reset_request_model' => $password_reset_request_model]);
    }
}

所以我终于拥有了

我点击某个按钮,如果我没有登录 - 我必须打开我的模态窗口并获取我在 Controller 中呈现的附加 View 。它有效,但是当我在模式窗口中输入错误数据时 - 我的页面转到此 /client/log-in URL。但我想在模态窗口中显示我的无效数据。

怎么做?

如果需要任何其他信息,请告诉我。

最佳答案

再次抱歉。我的错。我只需要将我的表格填入

<?php yii\widgets\Pjax::begin(['id' => 'log-in']) ?>
<?php $form = ActiveForm::begin(['id' => 'login-form', 'options' => ['data-pjax' => true]]); ?>
<?php yii\widgets\Pjax::end() ?>

这就是我所做的所有更改。文档、文档和另一份文档!

关于javascript - 模态窗口 yii2 中的 Ajax 验证数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36606438/

相关文章:

javascript - Browserify 与全局模块相结合

php - 为什么 date_create_from_format 总是为我返回 false?

javascript - 使用 Ajax/jQuery 将外部页面的内容加载到另一个页面

javascript - 使用 jQuery 在 Neo4j 上执行 Cypher 查询

javascript - 有谁知道如何将这个 jQuery 翻译成普通的 js?

javascript - 如何在 jQuery 调用序列中等待效果队列完成

javascript - 滚动到 jQuery-Textarea 的顶部

javascript - 使用谷歌电子表格作为 tumblr 主题的数据库?

php - .htaccess 与 ^(.*)$ index.php/$1 给出 "No input file specified"

php - 标准且简单的 mySQL 查询出错