使用此脚本无法成功登录。
Loginform.php
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || $user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect name/password.');
}
}
}
在我的模型中我有这个
User.php
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
if ($this->isNewRecord) {
$this->password = $this->setPassword($this->password);
}
return true;
}
return false;
}
public function validatePassword($password) {
return Yii::$app->getSecurity()->validatePassword($password, $this->password);
}
public function setPassword($password) {
return $this->password = Yii::$app->security->generatePasswordHash($password);
}
这是我的注册脚本
Signupform.php
public function signup() {
if($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->save();
return $user;
}
return null;
}
有谁能帮我一下吗?谢谢。 Follow This:
模型User.php
public $c_password; //Define a variable for confirm password
//This is rule
public function rules() {
return [
[['fname', 'lname', 'username', 'password',], 'required'],
[['fname', 'lname', 'authKey', 'accessToken'], 'string', 'max' => 100],
[['authKey', 'accessToken'], 'safe'],
[['username'], 'unique'],
['c_password', 'required'],
['c_password', 'compare', 'compareAttribute' => 'password', 'message' => "Passwords don't match"],
];
}
public function beforeSave($insert) {
if (parent::beforeSave($insert)) {
$this->password = Yii::$app->security->generatePasswordHash($this->password);
return true;
} else {
return false;
}
}
我在站点控制器中创建一个注册函数,您可以根据需要创建一个模型
SiteController.php
public function actionRegister() {
$model = new 'app'models'Users;
if ($model->load(Yii::$app->request->post()) && $model->save()) {
Yii::$app->session->setFlash('register', 'Registration Successful');
return $this->redirect(['login']);
} else {
return $this->render('register', ['model' => $model]);
}
}
这是我的视图文件register。php
<?php
$form = ActiveForm::begin([
'id' => 'login-form',
'options' => ['class' => 'form-horizontal'],
'fieldConfig' => [
'template' => "{input}'n{error}",
'options' => [
'tag' => false,
],
],
]);
?>
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
<?= $form->field($model, 'password')->passwordInput([]) ?>
<?= $form->field($model, 'c_password')->passwordInput([]) ?>
<button type="submit">Sign up</button>
<?php ActiveForm::end(); ?>