Как проверить, если массив не пустой - PullRequest
2 голосов
/ 21 июня 2019

как я могу проверить объект массива, если массив не пустой.

У меня есть многомерный массив, который мне нужно проверить с помощью правила проверки laravel, но я не могу этого сделать.

Массив

$array = [

  "family" => [

    [
      "adult" => 2
      "kids" => [
        ["age" => 1]
      ]
    ]


    [
      "adult" => 3
      "kids" => [

      ]
    ]

    [
      "adult" => 2
      "kids" => [
        ["age" => 5]
        ["age" => 2]
      ]
    ]

  ]

]

Я должен подтвердить большую часть key-val, например: family должно быть array, подтвердить adult и kids, если семейство не пустое (adult должно быть numeric, kids должно быть array и подтвердить age, если kids не пусто (age должно быть numeric))

Что я сделал до сих пор:

$request->validate([
      'family' => 'required|array|min:1',
      'family.*.adult' => 'required_if:?|numeric', //validate if family is not empty
      'family.*.kids' => 'required_if:?|array', //validate if family is not empty and it can be empty
      'family.*.kids.*.age' => 'required_if:?|numeric', //validate if kids is not empty
    ]);

что делать я не смогу понять?

1 Ответ

0 голосов
/ 21 июня 2019

Вы можете использовать метод validator.sometimes () для условного добавления правил проверки:

use Validator;

$validator = Validator::make($request->all(), [
    'family' => 'required|array|min:1'
]);

$validator->sometimes('family.*.adult', 'required|numeric', function ($input) {
    return !empty($input->family);
});

// etc..

$validator->validate();
...