Версия 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, но как заставить модальное окно передавать данные авторизации - не знаю.