一.LoginForm里的login()调了getUser(),所以修改getUser()即可
public function login()
{
if ($this->validate()) {
return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
} else {
return false;
}
}
二.修改
public function getUser()
{
if ($this->_user === false) {
if (strpos($this->username, "@")) //注册时已限制只能为数字字母,所以不会出现@
$this->_user = User::findByEmail($this->username); //email 登录
else
$this->_user = User::findByUsername($this->username);
}
return $this->_user;
}
三.仿照findByUsername写一个findByEmail方法
public static function findByEmail($email)
{
return static::findOne(['email' => $email, 'status' => self::STATUS_ACTIVE]);
}