Passwords yii2如何通过actionUpdate更改用户密码?
我有一个高级应用程序。我为用户模型创建CRUD。所以我得到了最新的行动。我试图通过添加Passwords yii2如何通过actionUpdate更改用户密码?,passwords,action,yii2,Passwords,Action,Yii2,我有一个高级应用程序。我为用户模型创建CRUD。所以我得到了最新的行动。我试图通过添加 <?= $form->field($model, 'password')->passwordInput() ?> UPD2 public function setPassword($password) { $this->password_hash = Yii::$app->security->generatePasswordHash($password)
<?= $form->field($model, 'password')->passwordInput() ?>
UPD2
public function setPassword($password) {
$this->password_hash = Yii::$app->security->generatePasswordHash($password);
}
以及在数据库中写入密码\u散列。我可以通过生成的CRUD轻松更改哈希,但不知道如何在updateAction中使用setPassword()
。这里“$this”是您的控制器,当然,它没有“new\u password”属性。您最好不要在控制器中设置新密码,而是在模型中设置,例如在beforeSave方法中:
if ($this->new_password) {
$this->setPassword($this->new_password);
}
您可以尝试使用另一个变量编写
updatePassword
函数,如setPassword
public function updatePassword($new_password) {
$this->password_hash = Yii::$app->security->generatePasswordHash($new_password);
}
声明一个变量
public $new_password;
并将其添加到规则()中
在控制器中的actionUpdate
添加
$model->updatePassword($model->new_password);
这将有助于查看更新问题。我努力了,但没有成功。可能是我做错了吗?试着调试它,看看脚本是否进入“if”语句。可能有不同的原因:例如,您的“新密码”必须在rules()方法中-例如:[“新密码”、“字符串”]。我们同样不知道“setPassword”方法的作用。它是否返回任何东西,或者,我猜,它执行类似“$this->password=$password”的操作。我添加了规则,但它不起作用。Id add
setPassword
metod有问题。我不知道如何调试它。您可以在那里放置类似“die($this->new_password);”的内容,然后查看当前值。您还可以学习如何在IDE中进行调试。
public $new_password;
public function rules() {
return [
//...
['new_password', 'required'],
['new_password', 'string', 'min' => 6],
];
}
$model->updatePassword($model->new_password);