Модальное окно + hasFlash

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Boglik
Сообщения: 42
Зарегистрирован: 2018.10.16, 04:49

Модальное окно + hasFlash

Сообщение Boglik »

Мне нужно сделать модальное окно с заполнением данных, сохранением и отправкой её в базу данных.
Собственно, с этим проблем нет.
Воспользовался статьей
https://кодер.укр/записи/yii2-форма-обр ... льном-окне

Но возникла проблема. Я не сделать вывод сообщения типа "данные успешно сохранены, теперь вы можете сохранить страницу".
Меня сразу переадресовывает на главную страницу как и прописано в контроллере.
Как сделать так, чтобы оставался hasFlash, а пользователь уже самостоятельно закрывать модальное окно?
Я так понимаю, что нужно убрать переадресацию в контроллере и что-то изменить в представлении? Когда убираю переадресацию, выходит белое окно..
SiteController.php

Код: Выделить всё

    {
        $model = new Zayavki_na_otryad();
        if($model->load(Yii::$app->request->post())) {

            $model->fio;
            $model->telefon;
            $model->city;
            $model->mesto_uchebi;
            $model->save();
            echo Yii::$app->session->setFlash('contactFormSubmitted');

        }
        else {
            return $this->renderFile('@app/views/site/index.php', ['model' => $model, 'koster' => Koster::getAll(), 'blog' => News::getBlog()]);
        }
Представление:

Код: Выделить всё

 
 <?= Html::a(Yii::t('app', 'Присоединиться'), ['#myModal'], ['class' => 'btn btn-secondary display-4', 'data-toggle' => 'modal', 'data-target' => '#myModal']) ?>
<?= contact::widget([]) ?>
Виджет contact.php

Код: Выделить всё

<?php

namespace site\components;

use site\models\Zayavki_na_otryad;
use yii\base\Widget;

class contact extends Widget
{

    public function run()
    {
        $model = new Zayavki_na_otryad();
        return $this->renderFile('@app/views/site/success.php', ['model' => $model]);

    }

}
Файл success.php

Код: Выделить всё

<?php

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\captcha\Captcha;
/* @var $model site\models\Zayavki_na_otryad */
?>

<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')) { ?>

    <?php
    $this->registerJs(
        "$('#myModalSendOk').modal('show');",
        yii\web\View::POS_READY
    );
    ?>

    <!-- Modal -->
    <div class="modal fade" id="myModalSendOk" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                    <h4 class="modal-title" id="myModalLabel">Feedback form</h4>
                </div>
                <div class="modal-body">
                    <p>Thank you for contacting us. We will respond to you as soon as possible.</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>

<?php } ?>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">

            <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>

            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
                <h4 class="modal-title" id="myModalLabel"></h4>
            </div>
            <div class="modal-body">

                <?= $form->field($model, 'fio')->textInput(['placeholder' => 'ФИО', 'value'=>'']) ?>

                <?= $form->field($model, 'telefon')->textInput(['placeholder' => '89', 'value'=>'']) ?>

                <?= $form->field($model, 'city')->textInput(['placeholder' => 'Город', 'value'=>'']) ?>

                <?= $form->field($model, 'mesto_uchebi')->textInput(['placeholder' => 'Место учебы', 'value'=>'']) ?>


            </div>
            <div class="modal-footer">
                <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
                <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>

            </div>

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

        </div>
    </div>
</div>
Ответить