2016-11-04 6 views
2

私は編集プロファイルで作業しています。ユーザーが値を入力していない場合にパスワードフィールドに値を与えないと、その後、パスワードの更新を自動的にユーザーがパスワードフィールドに値を与えないと、パスワードを更新しないでください。laravel 5.3

ここでは、問題を解決するために助けてください私の方法

{ 
$this->validate($request, [ 
      'name' => 'required|max:255', 

     ]); 

     $user = User::findOrFail($id); 
     $input = $request->all(); 
     $user->fill([ 
     'name'   => $request->input('name'), 
     'password'  => bcrypt($request->input('password')), 
     'def_timezone' => $request->input('def_timezone'), 
     'address_line_1' => $request->input('address_line_1'), 
     ])->save(); 

    session()->flash('msg',trans('successfully Updated.')); 
    } 

あるおかげ

答えて

5

あなたはこれを行うことができます:

fill()save()の代わりにupdate()メソッドを使用することもできます。このアプローチでは、空の値は無視されます。

$user->update($request->all()); 
+1

ありがとう、働いている@Alexey Mezenin –

0

あなたはユーザーがあなたのデシベルに空のパスワードを送信傾けるあなたの編集検証

'password' => 'min:6|max:50', 

にこのような何かを行う必要があります。

場合ユーザーパスワードを更新する前に確認したい場合は、古いパスワードを覚えているかどうかを確認できるように、Old_passwordを別のフィールドに表示すると良いでしょう。 ここに私の私の更新機能私の例である:

public function update(Request $request, $id) 
{ 


    $update_user = Validator::make($request->all(), [ 
     'name' => 'min:2|max:35|string', 
     'surname' => 'min:2|max:35|string',    
     'email' => Sentinel::inRole('Admin')?'required|email|min:3|max:50|string':(Sentinel::check()?'required|email|min:3|max:50|string|unique:users,email,'.$id:'required|email|min:3|max:50|unique:users|string'), 
     'old_password' => 'min:6|max:50', 
     'new_password' => 'min:6|max:50', 
    ]); 

    if ($update_user->fails()) { 
     return redirect()->back() 
        ->withErrors($update_user) 
        ->withInput(); 
    } 

    $user = User::find($id); 
    if ($user) { 

     if(!empty($request->file('image'))){ 
       $file = $request->file('image'); 
       $destinationPath = public_path() . '/upload-client/profile_image'; 
       $filename = str_random(6) . '_' . $file->getClientOriginalName(); 
       $unwanted = array("\'", "+", "%"); 
       $filename =str_replace($unwanted, "", $filename); 

       $uploadSuccess = $file->move($destinationPath, $filename); 
       $user->image_path=$filename; 
      } 
      if($request->name){ 
      $user->name=$request->name; 
      } 
      if($request->email){ 
      $user->email=$request->email; 
      } 
      if($request->old_password){ 
      if (Hash::check($request->old_password, $user->password)){ 
       $user->password=bcrypt($request->new_password); 
      }else{ 
       Session::flash('message', 'Your old password is incorrect.'); 
       Session::flash('status', 'error'); 
       return redirect()->back()->withErrors(['old_password', 'your old password is incorrect']); 
      } 
      } 

     $user->update(); 
     if ($request->role) { 
      $user->roles()->sync([$request->role]); 
     } 
     Session::flash('message', 'Success! User is updated successfully.'); 
     Session::flash('status', 'success'); 

    } 


    return redirect()->back(); 
} 
関連する問題