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

mar*_*han 5 php validation rest request-validation laravel

因此,我正在使用以下代码来验证表单的输入:

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

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

谢谢

IlG*_*ala 10

如果您查看官方文档,您会发现可以通过不同的方式处理输入验证。

对于您的情况,最好的解决方案是手动创建验证器,以便您可以在控制器内设置自己的逻辑。

如果您不想在请求上使用 validate 方法,您可以使用 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();
}
Run Code Online (Sandbox Code Playgroud)