如何使用Laravel Bail验证?

问题描述 投票:0回答:1

我在每个验证请求上使用Bail规则,我希望它在第一个验证异常时停止,并且不验证其他请求参数。但是它会验证所有输入数据。

MyController.php

public function update(Request $request)
    {
        $user = auth()->user();
        $request->validate([
            'name' => ['bail','string'],
            'email' => ['bail','email', Rule::unique('users')->ignore($user->id)],

        ]);
        $user->update(request()->only('name', 'email'));
        return response()->json($user);
    }

请求数据:

{name: "example", email: "[email protected]"}

响应:

{
    "message": "The given data was invalid.",
    "errors": {
        "name": [
            "The name field is required."
        ],
        "email": [
            "The email has already been taken."
        ]
    }
}

怎么了?

laravel validation laravel-validation
1个回答
1
投票

bail验证规则适用于“多规则” 属性。它确实not停止运行其他attributes的验证。从the documentation

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

如果标题属性上的unique规则失败,则将不检查max规则。

© www.soinside.com 2019 - 2024. All rights reserved.