首页 > 解决方案 > 检测 laravel 输入预填充值的变化

问题描述

我正在设置页面上,如果用户在输入字段中看到他预填的用户名和电子邮件。我喜欢检测(没有 jQuery )用户是否更改了输入上的预填充值。

对于密码重置字段(未预填充),我使用以下逻辑:

if($request['password'] != ""){
    if(!(Hash::check($request['password'], Auth::user()->password))){
      return redirect()->back()->with('error', 'Your password does not match with the password you provided.');
    }

    if(strcmp($request['password'], $request['new_password']) == 0){
      return redirect()->back()->with('error', 'New password cannot be same as your old one.');
    }

    $validation = $request->validate([
      'password' => 'required',
      'new_password' => 'required|string|min:6|confirmed',
    ]);

    $user->password = bcrypt($request['new_password']);
    $user->save();

    return redirect()->back()->with('alert-success', 'Password changed 
     successfully');
}

我如何检查用户是否更改了预填充代码以使用以下过程:

if($request[''] ????? ""){
    $user = Auth::user();
    $user->name = $request['name'];
    $user->email = $request['email'];
    $user->save();
}

谢谢

标签: phpvalidationlaravel-5

解决方案


在我看来,你不需要这一切。只需使用以下内容。如果值发生变化,它只会真正更新模型。如果值没有改变(即提交的数据与已经存储在数据库中的数据相同),则不会进行数据库查询。

$user = Auth::user();
$user->fill($request->only(['name', 'email']));
$user->save();

推荐阅读