Как удалить перенаправление Yii2 с ActiveForm и Pjax? - PullRequest
0 голосов
/ 15 октября 2018

У меня проблема с перенаправлением после отправки формы.

Первая: у меня есть эта форма для подписки пользователей.

<?php if (Yii::$app->session->hasFlash('success')): ?>
                    <div class="alert alert-form alert-success text-xs-center">
                        <?= Yii::$app->session->getFlash('success') ?>
                    </div>
                <?php endif; ?>
        <?php Pjax::begin(['id' => 'my-pjax']); ?>
        <?php $form = ActiveForm::begin([
                'enableAjaxValidation' => true,
                'validationUrl' => 'validate',
                'options' => [
                    'class' => 'mbr-form',
                    'data-pjax' => true,
                ],
        ]); ?>

        <div class="row row-sm-offset">
            <div class="col-md-4 multi-horizontal">
                <div class="form-group">
                    <?= $form->field($model, 'fio')->input('text', ['placeholder' => 'Иванов Иван Иванович'])->label('Ф.И.О',['class' => 'form-control-label mbr-fonts-style display-7']) ?>
                </div>
            </div>

            <div class="col-md-4 multi-horizontal">
                <div class="form-group">
                    <?= $form->field($model, 'email', ['enableAjaxValidation' => true])->input('email', ['placeholder' => 'ivanov.ivan@schoolofwriting.ru'])->label('Email', ['class' => 'form-control-label mbr-fonts-style display-7']) ?>
                </div>
            </div>
        </div>

        <span class="input-group-btn"><?= Html::submitButton('ЗАПИСАТЬСЯ', ['class' => 'btn btn-form btn-success display-4']) ?></span>

        <?php $form = ActiveForm::end(); ?>
        <?php Pjax::end(); ?>

Вторая:У меня есть контроллер с действиями для формы.

public function actionFree()
    {
        $this->view->title = "ШКОЛА ПИСАТЕЛЬСКОГО МАСТЕРСТВА: Новичок рассказов";

        $model = new SubscribeForm();
        $password = $model->generateStrongPassword(12);
        $model->course = 1;
        $model->password = md5($password);

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

                Yii::$app->session->setFlash('success', 'Будущий писатель, вскоре ты получишь письмо с инструкцией!
                  Надеемся, что курс тебе понравится и мы продолжим обучение');
            }
            else {
                Yii::$app->session->setFlash('error', $model->errors);
            }
        }
        else {
            // страница отображается первый раз
            return $this->render('free-course', ['model' => $model]);
        }
    }

    public function actionValidate() {
        $model = new SubscribeForm();

        if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            return ActiveForm::validate($model);
        }
    }

Что я делаю? Я использую проверку поля электронной почты, чтобы оно не повторялось и не выводило сообщениепо форме.Затем я получаю данные POST и сохраняю их в базе данных внутри контроллера.В результате я хочу установить FLASH MESSAGE и показать его на текущей открытой странице без перенаправления и обновлений.

Итак .. У меня всегда есть обновления.Почему?

...