Php 如果用户在密码字段laravel 5.3中未给出任何值,则不应更新密码

Php 如果用户在密码字段laravel 5.3中未给出任何值,则不应更新密码,php,laravel,Php,Laravel,我在编辑配置文件的工作,我想,密码不应该更新,如果用户没有给出任何值在密码字段现在,如果用户没有输入任何值,然后密码自动更新 这是我的方法 { $this->validate($request, [ 'name' => 'required|max:255', ]); $user = User::findOrFail($id); $input = $request->all();

我在编辑配置文件的工作,我想,密码不应该更新,如果用户没有给出任何值在密码字段现在,如果用户没有输入任何值,然后密码自动更新

这是我的方法

    {
$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.'));
    }
请帮助解决此问题,谢谢您可以执行以下操作:

'password' => $request->password ? bcrypt($request->password) : $user->password,
另外,您可以使用
update()
方法代替
fill()
save()
。使用此方法,将忽略空值:

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

您必须在编辑验证中执行类似的操作

'password' => 'min:6|max:50',
因此,用户无法向数据库发送空密码:

如果您想在更新用户密码之前进行检查,最好在您的视图中添加另一个字段,即旧密码,以便您可以检查用户是否记住旧密码,并且操作系统可以将其更改为新密码。 以下是我的更新函数示例:

 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();
}