在没有$ request的情况下执行Laravel验证

时间:2019-04-25 14:45:29

标签: php mysql laravel laravel-5

我试图在不传递$ 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

任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:2)

您可以通过传递数组来完成,因此all()返回所有传递的字段,尝试像这样使用它:

$validator = Validator::make(request()->all(), ...

另一个提示是先进行验证,然后找到用户并设置其字段。在这种情况下,验证可以起到保护作用。您还可以创建一个自定义Form请求并在其中设置验证规则。

答案 1 :(得分:0)

您可以使用Facade获取数据并将其传递给验证器,

$input = Request::all();

这里是documentation

答案 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();

的请求助手