kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Как подключить авторизацию к модальному окну Yii2?

В шаблоне есть следующее модальное окно с формой авторизации, я в него встроил элементы из стандартного login.php в views, подключил все зависимости:
<div class="modal fade" id="enter" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="site-login">
<?php $form = ActiveForm::begin([
        'id' => 'login-form',
      ]); ?>
  <div class="modal__dialog" role="document">
    <div class="modal__content">
      <div class="modal__header">
        <button type="button" class="modal__close" data-dismiss="modal" aria-label="Close">
          <img src="images/modal-close.png" alt="">
        </button>
        <h4 class="modal__title">Войти на сайт</h4>
      </div>
      <div class="modal__body">
          <div class="enter-form">  
            <form action="">
              <div class="modal__input">
                <div class="modal__label">
                  Ваш логин:*
                </div>
                <div class="modal__input-block">
                  <input type="text" name="username" class="input__item">
                  <a href="#" class="ques-icon">
                    <img src="images/ques-icon.png" alt="">
                  </a>
                </div>
              </div>
              <div class="modal__input">
                <div class="modal__label">
                  Пароль:*
                </div>
                <div class="modal__input-block">
                  <input type="password" name="password" class="input__item input__item_password">
                  <a href="#" class="forget-link">Забыли пароль?</a>
                </div>
              </div>
              <div class="submit__input">
                <?= Html::submitButton('Войти', ['class' => 'input__item', 'name' => 'login-button']) ?>
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>
  </div>
<?php ActiveForm::end(); ?>
</div>
</div>

Но при отправке формы ничего не происходит, как я понимаю сервер просто не принимает эту информацию. После нажатия кнопки "Войти" страница перезагружается, а в дебагере в разделе Request в $_POST висит следующее:
username 'test'
password 'test'
login-button ''

В лога нет записей о старте сессии и работы с yii\db\Connection, если использовать стандартную страницу авторизации, то в разделе Request в $_POST ничего нет, но в логах есть 5 info записей о работе с yii\web\Session::open, yii\db\Command::query yii\db\Connection::open, при этом авторизация происходит успешно и перекидывает в личный кабинет.
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
kimono
@kimono
Web developer
Разницы нет - в модальном окне форма авторизации, или на странице. Главное чтобы сама форма отправляла правильные данные в нужное место.
Если вы отправляете форму в экшен контроллера, то в этом экшене вы должны ее залоадить для проверки. Т.е. для авторизации вам нужно создать модель LoginForm с двумя (как минимум имя/почта и пароль) полями. В модальном окне вставляете правильный код:
$form = ActiveForm::begin();
echo $form->field($model, 'email');
echo $form->field($model, 'password')->passwordInput();
ActiveForm::end();

Тогда в $_POST придут данные в таком виде:
LoginForm[email] = ''
LoginForm[password] = ''

И в контроллере:
$model = new LoginForm();
if (Yii::$app->request->isPost){
  if ($model->load(Yii::$app->request->post()) && $model->validate()){
    ... далее авторизация
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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