модальное окно на yii2

Yii2 Модальное окно

Привет, я не так давно начал изучать Yii2 и в процессе изучения по мере появления трудностей делаю кое-какие заметки по кодингу. И и сегодня хочу поделиться примером модального окна на YII2. Все оказывается довольно таки просто. Ниже я привожу отрывки кода из вьюшки, контроллера и модельки.

Во вьюшку добавим вывод самого модального окна. В YII2 уже есть виджет позволяющий выводить бутстраповские модальные окна, его мы и будем использовать. Более детально о виджете и его свойствах  вы можете прочитать в следующей ссылке Class yii\bootstrap\Modal . Ну короче все тут предельно просто)

<?php
yii\bootstrap\Modal::begin([
'headerOptions' => ['id' => 'modalHeader','class'=>'text-center'],
'header' => '<h2>Купить в один клик</h2>',
'id' => 'modal',
'size' => 'modal-lg',
'clientOptions' => ['backdrop' => 'static', 'keyboard' => FALSE],
'options'=>['style'=>'min-width:400px']
]);
$modelPopup = new \common\models\ContactForm();
echo $this->context->renderPartial('/site/contactForm', [
'model' => $modelPopup,
]);
yii\bootstrap\Modal::end();
?>

Теперь время контроллера нашего модального окна.

Допустим в модальном окне мы выводим форму обратной связи и при сохранении данных из формы мы желаем просто скрыть модальное окошко и показать сообщение о успешной отправке формы. Я предлагаю какой-то такой код для решения этой задачи)

 

 public function actionContact()
{
$model = new Proposals();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('success', 'Ваша заявка принята, мы свяжемся с вами в ближайшее время');
} else {
Yii::$app->session->setFlash('error', 'Произошла ошибка при отправке почты, попробуйте еще раз!');
}
return $this->redirect(Yii::$app->request->referrer);
} else {
return $this->render('contact', [
'model' => $model,
]);
}
}

 


3 thoughts on “Yii2 Модальное окно

  1. Roman 26.03.2017 at 23:39

    А где файл модели? $modelPopup = new \common\models\ContactForm(); ???

    • Андрей Деревянко 28.03.2017 at 00:32

      Если есть необходимость сброшу в личку..а в данном примере он большого ззначения не играет =)

  2. Max 11.10.2017 at 21:01

    Согласен с Roman. Недопример.

Добавить комментарий