2014-12-20 1 views
-1

Я спрашиваю о LoginForm в Yii2Как изменить пользователь таблицы в LoginForm

после установки Yii, я получаю Web по умолчанию при входе в форме внутри него. Эта форма будет подключаться к имени таблицы «пользователь»

Затем я изменяю значение по умолчанию для создания нового сайта с другой формой входа. А также создаю новую таблицу для имени входа «db_user». Я по-прежнему использую модель по умолчанию с именем «LoginForm» в общей сумме/модели для входа. Вот код

<?php 
namespace common\models; 

use Yii; 
use yii\base\Model; 

/** 
* Login form 
*/ 
class LoginForm extends Model 
{ 
public $username; 
public $password; 
public $rememberMe = true; 

private $_user = false; 


/** 
* @inheritdoc 
*/ 
public function rules() 
{ 
    return [ 
     // username and password are both required 
     [['username', 'password'], 'required'], 
     // rememberMe must be a boolean value 
     ['rememberMe', 'boolean'], 
     // password is validated by validatePassword() 
     ['password', 'validatePassword'], 
    ]; 
} 

/** 
* Validates the password. 
* This method serves as the inline validation for password. 
* 
* @param string $attribute the attribute currently being validated 
* @param array $params the additional name-value pairs given in the rule 
*/ 
public function validatePassword($attribute, $params) 
{ 
    if (!$this->hasErrors()) { 
     $user = $this->getUser(); 
     if (!$user || !$user->validatePassword($this->password)) { 
      $this->addError($attribute, 'Incorrect username or password.'); 
     } 
    } 
} 

/** 
* Logs in a user using the provided username and password. 
* 
* @return boolean whether the user is logged in successfully 
*/ 
public function login() 
{ 
    if ($this->validate()) { 
     return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); 
    } else { 
     return false; 
    } 
} 

/** 
* Finds user by [[username]] 
* 
* @return User|null 
*/ 
public function getUser() 
{ 
    if ($this->_user === false) { 
     $this->_user = User::findByUsername($this->username); 
    } 

    return $this->_user; 
} 


} 

После прочтения кода я запутать, потому что в этой модели не объявляет имя таблицы, которая будет использоваться для входа в систему. После того, как я попробовал войти в систему, он работает только для пользователей, которые были записаны в «пользовательской» таблице.

Как изменить таблицу по умолчанию от «user» до «db_user»?

Спасибо.

+0

попробовать это как - http://www.bsourcecode.com/yiiframework2/yii-2-user-login-from-database/ – clonerworks

+0

я не understan d почему я получил голос. по крайней мере, объясните это первым –

ответ

0

Модель LoginForm - это просто модель для формы, а не для модели пользователя.

User::findByUsername($this->username); 

Как вы видите, модель БД используется в LoginForm является пользователь, если вы идете в вашей модели файлов/User.php вы увидите строку:

public static function tableName() 
{ 
    return '{{%user}}'; 
} 

Изменить что:

public static function tableName() 
{ 
    return 'db_user'; 
} 

Успехов

+0

спасибо, у меня есть идея –

Смежные вопросы