Задать вопрос

Почему у меня редиректит форму на renderAjax?

У меня есть форма восстановлением пароля с подтверждением телефона, модель формы new PasswordResetRequestForm.
И когда пользователь подтвердил телефон, то я переключаюсь на другую модель формы. Форма нормально отображается new ResetPasswordForm. Я только в саму форму action прописываю другой путь. Когда я делаю ошибки валидации то меня редиректит на другую страницу. Где я должен искать ошибку?
Моя реализация вкратце
public function actionRequestPasswordReset()
    {
        $scenario = PasswordResetRequestForm::SCENARIO_EMAIL;//Делаем сценарий по умолчанию по email
        $request = Yii::$app->request->post('PasswordResetRequestForm');

        //Для каждой проверки свои сценарии прописываем
        if (!Yii::$app->session->get('phone') && $request['phone'] !== '') {
            $scenario = PasswordResetRequestForm::SCENARIO_PHONE;
        } else if (Yii::$app->session->get('phone') && $request['code'] !== '') {
            $scenario = PasswordResetRequestForm::SCENARIO_CODE;
        }

        //Для подтверждение пароля
        $resetPassword = new PasswordResetRequestForm(['scenario' => $scenario]);

        if ($resetPassword->load(Yii::$app->request->post()) && $resetPassword->validate()) {
            //Для каждого сценарии свои шаги по восстановление пароля
            if ($scenario === PasswordResetRequestForm::SCENARIO_EMAIL) {
               ,,,
            } elseif ($scenario === PasswordResetRequestForm::SCENARIO_CODE) {
                $token = $resetPassword->tokenFormation(Yii::$app->session->get('phone'));//Формируем токен
                    //Если токен сформировался нормально, то формируем форму для изменение пароля
                    $model = new ResetPasswordForm($token);
                    return $this->renderAjax('requestPasswordResetToken', [
                        'model' => $model,
                        'success' => false,
                        'token' => $token
                    ]);
            }
        }

        return $this->renderAjax('requestPasswordResetToken', [
            'resetPassword' => $resetPassword,
            'success' => false,
        ]);
    }
/**
     * @brief Страница для формирование подтверждение пароля
     *
     * @param $token
     *
     * @return string
     */
    public function actionResetPasswordPhone($token)
    {
        $model = new ResetPasswordForm($token);
        $model->scenario = ResetPasswordForm::SCENARIO_PHONE;

        if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) {
            Yii::$app->session->setFlash('success', 'Новый пароль успешно установлен');

            return $this->redirect(['site/login']);
        } else {
            return $this->renderAjax('requestPasswordResetToken', [
                'model'     => $model,
                'success'   => false,
                'token'     => $token
            ]);
        }
    }


И сама форма во вьюхе
<?php if (isset($model) && isset($token)): ?>
                <?php $form = ActiveForm::begin([
                    'action' => Url::to(['site/reset-password-phone', 'token' => $token]),
                    'id' => 'form-password-reset',
                    'options' => ['class' => 'f_regular'],
                    'fieldConfig' => [
                        'options' => [
                            'class' => 'form_field'
                        ],
                        'template' => "{label}\n{input}\n{hint}",
                    ],
                ]); ?>

                <div class="form_field password_reset">
                    <div class="form_field_rs">
                        <input
                                name="ResetPasswordForm[password]"
                                type="password"
                                id="reset_pass_password"
                                class="input <?= $model->getFirstError('password') ? '__error' : '' ?>"
                                placeholder="Пароль"
                                value="<?= $model->password ?>"
                        >
                        <div class="err_field __visible"><?= $model->getFirstError('password') ?></div>
                    </div>
                </div>

                <div class="form_field confirm_reset">
                    <div class="form_field_rs">
                        <input
                                name="ResetPasswordForm[confirm]"
                                type="password"
                                id="reset_pass_confirm"
                                class="input <?= $model->getFirstError('confirm') ? '__error' : '' ?>"
                                placeholder="Подтвердите пароль"
                                value="<?= $model->confirm ?>"
                        >
                        <div class="err_field __visible"><?= $model->getFirstError('confirm') ?></div>
                    </div>
                </div>

                <input type="submit" id="reset_pass_btn" class="f_heavy btn" value="Восстановить">

                <?php ActiveForm::end(); ?>
        <?php endif; ?>


5c860900a4c28682451267.png
При этом переходить
/site/reset-password-phone?token=RHIekUD7idfndMNcs1wuh2SIWrjvJAOd_1552285868

Кто объяснить как это решить
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой 11 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы