@evgen9586
Backend-dev. Лублу Enterprise и не люблю понты)

Почему не видит Flash-ку? Где я ошибся?

В общем отправляю с формы сообщение в бд.

Вот форма
Форма
<?php if (Yii::$app->session->hasFlash('contactFormSub')): ?>

                    <div class="alert alert-success">
                        Ваше сообщение отправлено, в ближайшее время наши специалисты дадут Вам ответ на указнную вами электронную почту.
                    </div>
                <?php else: ?>
                <div class="contact-form">
                    <!-- contact form start -->
                    <?php $form = ActiveForm::begin(['id' => 'messages','options' => ['class' => 'row'], 'fieldConfig' => ['options' => ['tag' => false]]]); ?>
                        <!-- name -->
                        <div class="col-md-6">
                            <?= $form->field($model, 'nameU')->textInput(['autofocus' => true, 'class' =>'form-control main', 'placeholder' => 'Имя', 'required' => true])->label(false)?>
                        </div>
                        <!-- email -->
                        <div class="col-md-6">
                            <?= $form->field($model, 'emailU')->textInput(['autofocus' => true, 'class' =>'form-control main', 'placeholder' => 'Почта', 'required' => true])->label(false)?>

                        </div>
                        <!-- phone -->
                        <div class="col-md-12">
                            <?= $form->field($model, 'telephoneU')->textInput(['autofocus' => true, 'class' =>'form-control main', 'placeholder' => 'Телефон', 'required' => true])->label(false)?>
                        </div>
                        <!-- message -->
                        <div class="col-md-12">
                            <?= $form->field($model, 'textU')->textarea(['autofocus' => true, 'class' =>'form-control main', 'placeholder' => 'Текст сообщения', 'required' => true, 'rows' =>15])->label(false)?>

                        </div>
                        <!-- submit button -->
                        <div class="col-md-12 text-center">
                            <?= Html::submitButton('Отправить', ['class' => 'btn btn-style-one', 'name' => 'contact-button']) ?>
                        </div>
                    </form>
                    <!-- contact form end -->
                    <?php ActiveForm::end(); ?>
                </div>

                <?php endif; ?>


Ну и хотелось сделать чтобы при отправке форма пропала и появилось сообщение о том что оно отправлено .

Вот в контроллере

public function actionContacts()
    {
        $model = new Messages() ;
        if ($model->load(Yii::$app->request->post()) && $model->message()) {
            Yii::$app->session->setFlash('contactFormSub');
            return $this->refresh();
        }

        return $this->render('contacts', ['model' => $model]);
    }


И сам метод в модели

public function Message()
    {
        $model = new Messages();
        $model->name = $this->nameU;
        $model->email = $this->emailU;
        $model->telephone = $this->telephoneU;
        $model->text = $this->textU;
        $model->save();

    }


Но при отправке сообщение просто обновляется страница (и значения в полях остаются) , сообщение в БД доходит всё ок. Кстати при дальнейших обновлениях страницы выскакивает табличка и всегда сабмит вызывает.

Но проблем в том что форма не заменилась сообщением об успешной отправке. Где я накосячил?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы очень странно используете flash сообщения, рекомендую:
https://www.yiiframework.com/doc/guide/2.0/ru/runt...
Но тем не менее должно работать. А сессия нормально работает? Вы уверенны, что
if ($model->load(Yii::$app->request->post()) && $model->message()) {
срабатывает? Попробуйте addFlash вместо setFlash
Ответ написан
Ваш ответ на вопрос

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

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