我试图在不传递$ request变量的情况下执行验证,有人可以通过验证函数提供我传递的信息吗?我的代码在下面
public function change($id)
{
$user = User::find($id);
$user->name = request("name");
$user->date_of_birth = request("date");
$user->email = request("email");
$user->phone = request("phone");
$user->address = request("address");
$user->city = request("city");
$user->postcode = request("postcode");
$validator = Validator::make(request(), [
'name' => 'required',
'email' => 'email|string|max:255|unique:users',
'phone' => 'required|numeric',
'address' => 'required|numeric',
'postcode' => 'required|numeric',
'city' => 'required'
]);
if ($validator->fails()) {
return redirect("/user/edit")
->withErrors($validator)
->withInput();
}
$user->save();
return redirect('/user');
}
再次,我正在尝试使用$ request
任何帮助将不胜感激!
答案 0 :(得分:2)
您可以通过传递数组来完成,因此all()
返回所有传递的字段,尝试像这样使用它:
$validator = Validator::make(request()->all(), ...
另一个提示是先进行验证,然后找到用户并设置其字段。在这种情况下,验证可以起到保护作用。您还可以创建一个自定义Form请求并在其中设置验证规则。
答案 1 :(得分:0)
答案 2 :(得分:0)
如果您不想使用$request
,则可以使用request()
帮助程序。例如:
$user = User::find($id);
$user->name = request("name");
$user->date_of_birth = request("date");
$user->email = request("email");
$user->phone = request("phone");
$user->address = request("address");
$user->city = request("city");
$user->postcode = request("postcode");
request()->validate([
'name' => 'required',
'email' => 'email|string|max:255|unique:users',
'phone' => 'required|numeric',
'address' => 'required|numeric',
'postcode' => 'required|numeric',
'city' => 'required'
])
$user->save();
return redirect('/user');
除非您想以其他方式专门处理失败的验证,否则它会很好地工作。
答案 3 :(得分:0)
如果您不能使用$ request,请使用可以用作Request::all();
或request->all();