2 回答

TA贡献1793条经验 获得超6个赞
您实际上可以在访问控制器之前验证数据。它更安全,您将拥有更清晰的代码。首先,创建您的自定义请求验证:
php artisan make:request UserRequest
这将创建一个空UserRequest类,您可以在其中验证数据:
class UserRequest extends FormRequest
{
public function authorize()
{
return true;
}
//Validate your data here
public function rules()
{
return [
'phone' => 'required|unique:users',
'fname' => 'required',
'lname' => 'required',
];
}
//Add custom message if validation fails
public function messages()
{
return [
'phone.required' => 'Phone is required.',
'phone.unique' => 'Phone number should be unique.',
'fname.unique' => 'First name is required.',
'lname.required' => 'Last name is required.',
];
}
}
您现在要做的就是在控制器中导入此自定义验证:
public function update(UserRequest $request)
{
$user_id = Auth::user()->id;
User::where('id', $user_id)->update([
'phone' => $request->phone,
'fname' => $request->fname,
'lname' => $request->lname
]);
return;
}

TA贡献1898条经验 获得超8个赞
有一个问题。那就是 'phone' => 'unique:App\User,phone,' 。$用户->电话, 线路。
您的代码:
您需要在保存到数据库之前验证请求
public function update(Request $request)
{
$user = Auth::user();
$request->validate([
// unique:table,column,except,idColumn
'phone' => 'unique:App\User,phone,' . **$user->phone**,
]);
$user_id=Auth::user()->id;
User::where('id', $user_id)->update([
'phone' => $request->phone,
'fname' => $request->fname,
'lname' => $request->lname
]);
return;
}
I hope it helps you.
这会产生问题。你应该使用$this->phone。
公共功能更新(请求 $request){ $user = Auth::user();
$request->validate([
// unique:table,column,except,idColumn
'phone' => 'unique:App\User,phone,' . $this->phone,
]);
$user_id=Auth::user()->id;
User::where('id', $user_id)->update([
'phone' => $request->phone,
'fname' => $request->fname,
'lname' => $request->lname
]);
return;
}
试试这个。
- 2 回答
- 0 关注
- 207 浏览
添加回答
举报