0
アイデアが不足しています。私は自分のデータベースのユーザレコードを更新するコントローラメソッドを持っています。Laravel 5 - ユーザーを更新するとdbのパスワードフィールドが削除される
現在のユーザーが氏名、ユーザー名、電子メール、パスワードを入力できるフォームがあります。パスワード以外のすべてのフィールドには、保存された値があらかじめ入力されています。
ユーザーがパスワードフィールドを空白のままにすると、現在のパスワードが上書きされます。もちろん、私はempty()
とisset()
で何かを試しました。ここで
public function update($user_id, Request $request){
if(Auth::user()->canUpdateUser($user_id)){
$user = User::find($user_id);
$inputs = $request->all();
foreach($inputs as $key => $value){
if($key === 'password' && !empty($inputs[$key])) {
$validator = Validator::make($inputs, [
'password' => 'confirmed|required'
]);
if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
} else {
$user->$key = bcrypt($value);
}
} elseif($key === 'password_confirmation' || $key === '_token'){
// Nothing
} elseif($key === 'username') {
$validator = Validator::make($request->all(), [
'username' => 'unique:users,username,' . $user->id
]);
if($validator->fails()){
return back()->withErrors($validator)->withInput();
} else {
$user->$key = $value;
}
} elseif($key === 'email'){
$validator = Validator::make($request->all(), [
'email' => 'unique:users,email,' . $user->id
]);
if($validator->fails()){
return back()->withErrors($validator)->withInput();
} else {
$user->$key = $value;
}
} else {
echo $key, "<br>";
$user->$key = $value;
}
}
$user->save();
//return back()->with('success', 'Deine Daten wurden geändert');
} else {
abort(401);
}
}
ありがとう、ありがとう!私は$ request-> except() '-function :)を認識していませんでした。 – Brotzka