Задать вопрос
kdes70
@kdes70
Web developer

Yii2 как открыть модальное окно по определенному URL?

Здравствуйте коллеги!!
Помогите решить вопрос плиз!
Делаю на сайте форму логина в модальном окне, и вроде все класс, все работает,
нажимаю на кнопочку окно с формой открывается.
Но встал вопрос как сделать так, что если пользователь ведет в адресной страке, /login
его не переводило на этот адрес а просто открывало окно

вот части кода, что бы было меньше не нужных вопросов

public function actionLogin()
    {
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new LoginForm();

        if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())){
            if ($model->login()) {
                return $this->goBack();
            } else{
                Yii::$app->response->format = Response::FORMAT_JSON;
                return ActiveForm::validate($model);
            }
        }
        return $this->renderAjax('ajax-login', [
            'model' => $model
        ]);
        
    }


и есть такой js

$('#modal-btn').on('click', function () {
    $('#modal').modal('show')
        .find('#modal-content')
        .load($(this).attr('data-target'));
});


<a id="modal-btn" data-target="<?php echo \yii\helpers\Url::to('/login')?>">Вход</a>

            <?php
            yii\bootstrap\Modal::begin([
                'header' => 'Оформить заказ',
                'id' => 'modal',
                'size' => 'modal-md',
            ]);
            ?>
            <div id='modal-content'>Загружаю...</div>
            <?php yii\bootstrap\Modal::end(); ?>

Partial с формой логина:
<div class="row">
        <div class="col-lg-5">
            <?php $form = ActiveForm::begin(['id' => 'login-form']); ?>
            <?= $form->field($model, 'username') ?>
            <?= $form->field($model, 'password')->passwordInput() ?>
            <?= $form->field($model, 'rememberMe')->checkbox() ?>
            <div style="color:#999;margin:1em 0">
                <?= Html::a(Module::t('module', 'LINK_PASSWORD_RESET'), ['password-reset-request']) ?>.
            </div>
            <div class="form-group">
                <?= Html::submitButton(Module::t('module', 'USER_BUTTON_LOGIN'), ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
            </div>
            <?php ActiveForm::end(); ?>
        </div>
    </div>
  • Вопрос задан
  • 3706 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Зачем нужен урл, если логин в модальном окне?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kdes70
@kdes70 Автор вопроса
Web developer
по совету Максима Тимофеева решил вопрос так

$(function () {
        if (location.hash == '#login') { 
            var login_form = $('#modal-login-form');
            $('#modal').modal('show')
                .find('#modal-content')
                .load(login_form.attr('data-target'));
        }
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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