私はユーザーログインでlaravelプロジェクトに取り組んでいます。管理者は新しいユーザーを作成して既存のユーザーを編集できます。私はpassword
とpasswordConfirm
フィールドをupdate-user-formに持っています。管理者がフォームに新しいパスワードを入力した場合は、検証を確認してdb内のレコードを更新する必要があります。そうでない場合は、パスワードを変更してはいけません(古いパスワードを保持する)が、他のユーザーデータ(ファーストネームのように)を更新するべきです。Laravelパスワードが設定されている場合にのみ更新パスワード
フィールドが空のpassword
フィールドとpasswordConfirm
フィールドを送信しようとすると、検証されません。パスワードが文字列で少なくとも6文字以上でなければならないという検証エラーが出ましたが、理由はわかりません。私の更新機能の最初の行は無視されるようです。
UserController.php
public function update(User $user, UserRequest $request) {
$data = $request->has('password') ? $request->all() : $request->except(['password', 'passwordConfirm']);
$user->update($data);
return redirect('/users');
}
UserRequest.php
public function rules() {
return [
'firstname' => 'required|string|max:255',
'lastname' => 'required|string|max:255',
'email' => 'required|string|email|max:255',
'password' => 'string|min:6',
'passwordConfirm' => 'required_with:password|same:password',
];
}
それはうまくいきません。空の 'password'フィールドと空の' passwordConfirm'フィールドを使ってフォームを送信した後、 'password'フィールドが必要であるというエラーが出ました。 – Pengxer
@Pengxerは 'password'から' required'を削除してからチェックします。 – Ganesh