Я хочу использовать две таблицы из разных баз данных для функции входа в Yii2 basi c app.
В окне входа в систему я добавляю новое поле:
<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'choice') ?>
В LoginForm, я изменяю это:
public function getUser() {
if ($this->_user === false && $this->choice == 1) {
$this->_user = User::findByUsername($this->username);
}
else if ($this->_user === false && $this->choice == 2) {
$this->_user = UserPerusahaan::findByUsername($this->username);
}
return $this->_user;
}
Пользователь. php имеет это:
public static function getDb() {
return \Yii::$app->dblogin; // use the "db2" application component
}
public static function tableName() {
return 'pengguna';
}
Что отличает UserPerusahaan. php от пользователя. php это :
/*public static function getDb() {
return \Yii::$app->dblogin;
}*/
public static function tableName() {
return 'perusahaan';
}
Когда я пытаюсь войти, он просто обновляет страницу входа. Что мне здесь не хватает? Или есть другой лучший практический подход?
РЕДАКТИРОВАТЬ:
Я пытался добавить это к компонентам в Интернете. php:
'user' => [
'class' => 'yii\web\User',
'identityClass' => 'app\models\User',
'enableAutoLogin' => true,
],
'userperusahaan' => [
'class' => 'yii\web\User',
'identityClass' => 'app\models\UserPerusahaan',
'enableAutoLogin' => true,
],
И это для LoginForm. php:
public function login() {
if ($this->validate()&& $this->choice == 1) {
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
}
else if ($this->validate()&& $this->choice == 2) {
return Yii::$app->userperusahaan->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
}
return false;
}
Вход в систему с использованием $ choice = 1 работает, но использование $ choice = 2 по-прежнему дает мне обновленную страницу входа.