Laravel 验证通过空白输入

Laravel Validation Passing Blank Input

我有一个 laravel 表单来更新数据库中现有用户的信息,但如果该表单中的某个字段为空,我不希望它更新数据库中的该记录。就像现在一样,如果该字段为空白并且提交了表单,它会传递该空白输入并删除数据库中的记录。

下面是编辑用户信息,然后进行数据库更新的功能。我目前将 Request::old('...') 附加到电子邮件,但由于验证是 'unique:users',它给出了错误 'email is taken'.

谢谢,

public function postEdit(Request $request)
{
    $this->validate($request, [
        'email' => 'unique:users|email|max:255',
        'password' => 'min:6',
        'confirm_password' => 'same:password', 
        'about_me' => 'max:500',
    ]);

    Auth::user()->update([


        'email' => $request->input('email'),
        'password' => bcrypt($request->input('password')),
        'confirm_password' => bcrypt($request->input('confirm_password')),
        'about_me' => $request->input('about_me'),
    ]);

    return redirect()->route('profile.edit')->with('info', 'You have updated your profile!');
}

在验证规则中你可以设置'required',这一定有帮助。

您需要修改 unique 规则以排除您正在编辑的记录。

而不是

'email' => 'unique:users|email|max:255',

你应该使用:

'email' => 'unique:users,email,'. Auth::user()->id.'|email|max:255',

Reference for unique rule