Php Eroro:对非对象调用成员函数validatePassword()

Php Eroro:对非对象调用成员函数validatePassword(),php,yii,Php,Yii,我正在尝试安装Humbhub,我对Yii框架非常陌生,在我的登录页面上出现了下面的错误 错误:对非对象调用成员函数validatePassword() 这是我的accountlogin.php源代码 <?php namespace humhub\modules\user\models\forms; use Yii; use yii\base\Model; use humhub\modules\user\models\User; use humhub\modules\user\libs\

我正在尝试安装Humbhub,我对Yii框架非常陌生,在我的登录页面上出现了下面的错误

错误:对非对象调用成员函数validatePassword()

这是我的accountlogin.php源代码

<?php

namespace humhub\modules\user\models\forms;

use Yii;
use yii\base\Model;
use humhub\modules\user\models\User;
use humhub\modules\user\libs\Ldap;
use humhub\models\Setting;
use yii\db\Expression;

/**
 * LoginForm is the model behind the login form.
*/
class AccountLogin extends Model
{

/**
 * @var string user's username or email address
 */
public $username;
public $password;
public $rememberMe = true;
private $_user = false;

/**
 * @return array the validation rules.
 */
public function rules()
{
    return [
        [['username', 'password'], 'required'],
        ['rememberMe', 'boolean'],
        ['password', 'validatePassword'],
        ['username', 'validateUser'],
    ];
}

/**
 * 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 = $user = $this->getUser(); 
        if ($user !== null) {
            if ($user->auth_mode === User::AUTH_MODE_LOCAL && $user->currentPassword->validatePassword($this->password)) {
                return;
            } elseif ($user->auth_mode === User::AUTH_MODE_LDAP && Ldap::isAvailable() && Ldap::getInstance()->authenticate($user->username, $this->$password)) {
                return;
            }
        }
        $this->addError($attribute, 'Incorrect username or password.');
    }
}

public function validateUser($attribute, $params)
{
    if (!$this->hasErrors()) {
        $user = $this->getUser();
        if ($user !== null) {
            if ($user->status == User::STATUS_DISABLED) {
                $this->addError($attribute, 'Your account is disabled!');
            }
            if ($user->status == User::STATUS_NEED_APPROVAL) {
                $this->addError($attribute, 'Your account is not approved yet!');
            }
        }
    }
}

/**
 * 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() && Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0)) {
        $this->_user->last_login = new Expression('NOW()');
        $this->_user->save();
        return true;
    } else {
        return false;
    }
}

/**
 * Finds user by [[username]]
 *
 * @return User|null
 */
public function getUser()
{
    if ($this->_user === false) {
        $this->_user = User::find()->where(['username' => $this->username])->orWhere(['email' => $this->username])->one();

        // Could not found user -> lookup in LDAP
        if ($this->_user === null && Ldap::isAvailable() && Setting::Get('enabled', 'authentication_ldap')) {

            // Try load/create LDAP user
            $usernameDn = Ldap::getInstance()->ldap->getCanonicalAccountName($this->username, \Zend\Ldap\Ldap::ACCTNAME_FORM_DN);
            Ldap::getInstance()->handleLdapUser(Ldap::getInstance()->ldap->getNode($usernameDn));

            // Check if user is availble now
            $this->_user = User::find()->where(['username' => $this->username])->orWhere(['email' => $this->username])->one();
        }
    }

    return $this->_user;
  }

}
更新:用户模块中的config.php

<?php

use humhub\modules\search\engine\Search;
use humhub\modules\user\Events;
use humhub\commands\IntegrityController;
use humhub\modules\content\components\ContentAddonActiveRecord;
use humhub\modules\content\components\ContentActiveRecord;
use humhub\commands\CronController;

return [
'id' => 'user',
'class' => \humhub\modules\user\Module::className(),
'isCoreModule' => true,
'urlManagerRules' => [
    ['class' => 'humhub\modules\user\components\UrlRule']
],
'events' => [
    ['class' => Search::className(), 'event' => Search::EVENT_ON_REBUILD, 'callback' => array(Events::className(), 'onSearchRebuild')],
    ['class' => ContentActiveRecord::className(), 'event' => ContentActiveRecord::EVENT_BEFORE_DELETE, 'callback' => array(Events::className(), 'onContentDelete')],
    ['class' => ContentAddonActiveRecord::className(), 'event' => ContentAddonActiveRecord::EVENT_BEFORE_DELETE, 'callback' => array(Events::className(), 'onContentDelete')],
    ['class' => IntegrityController::className(), 'event' => IntegrityController::EVENT_ON_RUN, 'callback' => array(Events::className(), 'onIntegrityCheck')],
    ['class' => CronController::className(), 'event' => CronController::EVENT_ON_HOURLY_RUN, 'callback' => [Events::className(), 'onHourlyCron']],
]
];
?>


您使用的是基本模板还是高级模板?请发布您的config/main.php模块用户内容只是想提一下,我安装humbhub的服务器上有一个“ini_set”,我不得不在几个地方对它进行注释,我没有正确考虑它是否会影响其他组件,你认为是吗?你显示的错误与对象不存在有关,然后你尝试对非对象使用函数。。我将检查您正在使用的用户类。。然后检查如何创建和调用该对象。。乍一看,这个初始设置的问题似乎不相关,但。。目前我还不知道……那么,到目前为止有什么想法吗?
<?php

use humhub\modules\search\engine\Search;
use humhub\modules\user\Events;
use humhub\commands\IntegrityController;
use humhub\modules\content\components\ContentAddonActiveRecord;
use humhub\modules\content\components\ContentActiveRecord;
use humhub\commands\CronController;

return [
'id' => 'user',
'class' => \humhub\modules\user\Module::className(),
'isCoreModule' => true,
'urlManagerRules' => [
    ['class' => 'humhub\modules\user\components\UrlRule']
],
'events' => [
    ['class' => Search::className(), 'event' => Search::EVENT_ON_REBUILD, 'callback' => array(Events::className(), 'onSearchRebuild')],
    ['class' => ContentActiveRecord::className(), 'event' => ContentActiveRecord::EVENT_BEFORE_DELETE, 'callback' => array(Events::className(), 'onContentDelete')],
    ['class' => ContentAddonActiveRecord::className(), 'event' => ContentAddonActiveRecord::EVENT_BEFORE_DELETE, 'callback' => array(Events::className(), 'onContentDelete')],
    ['class' => IntegrityController::className(), 'event' => IntegrityController::EVENT_ON_RUN, 'callback' => array(Events::className(), 'onIntegrityCheck')],
    ['class' => CronController::className(), 'event' => CronController::EVENT_ON_HOURLY_RUN, 'callback' => [Events::className(), 'onHourlyCron']],
]
];
?>