kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Почему не срабатывает авторизация Yii2?

Версия Yii2 basic 2.0.9. Стандартная авторизация через LoginForm работает. Необходимо добавить возможность авторизации через модальное окно расположенное в layouts/main.php. Следующая форма:
<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="LoginForm">
              <div class="modal__input">
                <div class="modal__label">
                  Ваш логин:*
                </div>
                <div class="modal__input-block">
                  <input type="text" name="LoginForm[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="LoginForm[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 держит в себе
_csrf 'azZHQ0thSTFYcyw7E1IIATwEKRs7JD1QGHoNBw4uOXo8BgwkJA0AeA=='
LoginForm [
'username' => 'test'
'password' => 'test'
]
login-button ''

В logs пусто.
Если проводить авторизацию через стандартную форму, то $_POST ничего нет, но в логах есть 5 info записей о работе с yii\web\Session::open, yii\db\Command::query и yii\db\Connection::open
Пробовал вместо
<input type="text" name="LoginForm[username]" class="input__item">

использовать то, что используется в login.php:
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>

Но тогда страница не загружается, вместо нее ошибка
PHP Fatal Error – yii\base\ErrorException

Call to a member function formName() on null

В теории понимаю, что LoginForm обрабатывается контроллером actionLogin, который и рендерит саму страницу login, но как заставить модальное окно передавать данные авторизации - не знаю.
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
bitver
@bitver
ActiveForm::begin(['action' =>['site/login'], 'id' => 'login-form', 'method' => 'post',]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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