0

我的控制器中有自定义验证代码

代码

$validator = Validator::make($request->all(), [
    'query' => 'required_without:fruits|string|min:2|max:50',
    'page' => 'integer|max:10000000',
    "fruits" => "required_without:query|array|min:1|max:100",
    "fruits.*" => "required|string|min:2|max:50|distinct|exists:fruits,name"
]);

if ($validator->fails()) {
    return response()->json($validator->errors(), 422);
}

$query = $request->get('query');
$fruits = $request->get('fruits');

// How to replace this block with Laravel core validation rules
if(($query && mb_strlen($query) > 1) && (is_array($fruits) && count($fruits))) {
    return response()->json([
        'errors' => [
            'You cannot use parameter "query" when parameter "fruits" already exists'
        ]
    ], 422);
}

当请求存在query并且fruitslaravel 不返回错误时。当存在字段时,query我不需要提交fruits或何时必须fruits提交query

4

1 回答 1

0

这实际上不是验证的责任。

您可以为此制定自定义规则(此处提供文档),但我可能只是检查水果是否存在,然后使用它是否存在而不是查询(我认为您说水果的优先级更高,对吧?)

于 2020-03-13T09:59:27.453 回答