Как не принять пользовательский параметр, когда другой уже существует - PullRequest
0 голосов
/ 13 марта 2020

У меня есть собственный код проверки в моем контроллере

Код

$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 и fruits laravel не ' верните мне ошибку. При наличии поля query мне не нужно подавать fruits или когда имеет fruits до query.

1 Ответ

0 голосов
/ 13 марта 2020

Это на самом деле не ответственность за проверку.

Вы могли бы создать для этого собственное правило ( документация доступна здесь ), но я бы, вероятно, просто проверил, присутствуют ли фрукты, а затем использовал бы его, если оно есть, вместо запроса (я думаю, Вы сказали, что фрукты - более высокий приоритет, верно?)

...