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