사용자를 성공적으로 추가 할 수 있습니다. 암호 해시 사용 중입니다. md5()
그러나 사용자를 업데이트하면 오류가 발생합니다.Yii2에서 사용자 프로필 업데이트 중 암호를 관리하는 방법
<div class="form-group">
<?php
if($case == 'create') { //this condition called when create user
echo $form->field($model, 'password')->passwordInput([
'maxlength' => true,
'placeholder' => 'Enter the Password',
]);
}
else { // during update
echo $form->field($model, 'password')->passwordInput([
'maxlength' => true,
'placeholder' => 'Enter the Password',
'value' => '',
]);
}
?>
</div>
<div class="form-group">
<?= $form->field($model, 'confirm')->passwordInput([
'maxlength' => true,
'placeholder' => 'Confirm Password',
]) ?>
</div>
와 컨트롤러에서 나는 다음과 같은 코드를 사용하고 있습니다 :
public function actionUpdate($id)
{
$model = $this->findModel($id);
$case = "update";
if ($model->load(Yii::$app->request->post())) {
$model->save();
return $this->redirect(['view', 'id' => $model->id]);
}
else {
return $this->render('update', [
'model' => $model,
'all_users_array' => $all_users_array,
'all_groups_array' => $all_groups_array,
'case' => $case,
]);
}
}
을, 나는 다음과 같은 코드를 사용하고 양식 즉,보기에서
public function rules()
{
return [
[['firstname', 'lastname', 'username', 'email', 'role', 'group_user','status'], 'required'],
['email','email'],
[['confirm'], 'compare', 'compareAttribute' => 'password','on'=>'create'],
[['firstname', 'lastname', 'username', 'email', 'password', 'confirm', ], 'string', 'max' => 255],
];
}
: 여기
모델의 규칙입니다
오류가 발생합니다 :
Undefined offset: 1 Failed to prepare SQL: UPDATE
xbox_user
SETpassword
=:qp0,role
=:qp1,modified
=:qp2,status
=:qp3 WHEREid
=:qp4
누구든지 코드를 수정해야합니까?
감사합니다. 다음 작동하지 않을 경우
규칙에서 필수 목록에서'암호'를 제거하십시오. '['성 ','성 ','이메일 ','역할 ','그룹 사용자 ','상태 ']'필수 ']' –
내 질문을 업데이트했습니다. – 981
은'create'와'update' 액션을 보여줍니다. –