UPD: Выяснил, что редирект не срабатывает после вызова из модели формы метода любой другой модели. Не важно, какого - статического или динамического - даже если этот метод пустой. Пробовал создавать абсолютно новую пустую модель, просто "чистый" класс без наследования чего либо - результат один и тот же: после обращения к методу класса подвисает редирект.
Код в контроллере:
Код: Выделить всё
/**
* Отображает стартовую страницу сайта.
*
* @return string
*/
public function actionIndex()
{
// создать объёкт модели
$model = new IndexLoginForm();
//проверить, не получила ли модель данные из формы?
if($model->load(Yii::$app->request->post()))
{
//если нажата кнопка на форме перехода на страницу регистрации
if($model->name == 'REGISTER' && $model->password == 'REGISTER')
{
//выполнить редирект на страницу регистрации
$this->redirect(['site/register']);
}
else
{
//если данные введены корректно
if($model->validate())
{
//выполнить редирект на страницу пользователя
if($model->validateLogin())
{
Yii::trace('Выполняется редирект на user/index.');
$this->redirect(['user/index']);
}
else
{
// даныне некорректны - отрендерить представление
return $this->render('index', ['model' => $model]);
}
}
}
}
else
{
// даныне не получены, либо некорректны - отрендерить представление
return $this->render('index', ['model' => $model]);
}
}
Код: Выделить всё
/**
* Проверка существования пользователя (логина) после ввода логина/пароля.
* Если логин есть в базе данных - возвращается истина.
*/
public function validateLogin()
{
if (!$this->hasErrors()) {
if (User::findOne(['login' => $this->name])) {
//TODO: здесь должна быть ещё проверка пароля
return true;
}
}
return false;
}