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',
我有一个 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',