Laravel,在控制器中处理验证错误

Laravel, Handling validation errors in the Controller

所以我正在使用以下代码验证表单的输入:

$request->validate([
    'title' => 'bail|required|max:255',
    'body' => 'required',
]);

所以基本上,表单中有两个字段,一个标题和一个 body,它们具有上述规则。现在,如果验证失败,我想在重定向到视图之前直接在控制器中捕获错误,以便我可以发送错误消息作为对 Post 请求的响应。最好的方法是什么? 我知道错误被推送到 session 但这是要处理的视图,但我想在控制器本身中处理此类错误。

谢谢

如果您查看 official documentation,您会发现可以用不同的方式处理输入验证。

对于您的情况,最好的解决方案是 create the validator manually 这样您就可以在控制器中设置自己的逻辑。

If you do not want to use the validate method on the request, you may create a validator instance manually using the Validator facade.

这里有一个小例子:

public function store(Request $request)
{
    $validator = Validator::make($request->all(), [
        'title' => 'bail|required|max:255',
        'body' => 'required',
    ]);

    // Check validation failure
    if ($validator->fails()) {
       // [...]
    }

    // Check validation success
    if ($validator->passes()) {
       // [...]
    }

    // Retrieve errors message bag
    $errors = $validator->errors();
}