Собственно, с этим проблем нет.
Воспользовался статьей
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([]) ?>
Код: Выделить всё
<?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]);
}
}
Код: Выделить всё
<?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>