Как провалидировать список на laravel в кастомном правиле?

В Laravel есть мощная система валидации, которая позволяет провалидировать исходные данные на основе различных правил. Часто бывает необходимо провалидировать не только отдельные поля, но и списки данных. Для этого можно использовать кастомные правила валидации.

Чтобы провалидировать список данных на Laravel в кастомном правиле, вы можете воспользоваться следующей последовательностью действий:

1. Создайте новый класс правила валидации. Для этого выполните команду php artisan make:rule ListValidationRule в командной строке. Здесь ListValidationRule - название вашего класса правила валидации.

2. Откройте созданный класс правила валидации и определите метод passes(), который будет проводить валидацию. Например, вы можете проверить, что каждый элемент списка является целым числом:

public function passes($attribute, $value)
{
    foreach ($value as $item) {
        if (!is_int($item)) {
            return false;
        }
    }
    
    return true;
}

3. Определите метод message(), который будет возвращать сообщение об ошибке при невалидном списке данных:

public function message()
{
    return 'Список должен содержать только целые числа.';
}

4. Теперь, когда ваше кастомное правило валидации готово, вы можете использовать его в правилах валидации вашей формы или запроса. Например, вы можете провалидировать список данных для поля items следующим образом:

public function store(Request $request)
{
    $rules = [
        'items' => ['required', new ListValidationRule],
    ];

    $validatedData = $request->validate($rules);
}

В данном примере список данных будет считаться валидным, если он присутствует и каждый его элемент является целым числом. В противном случае, будет сгенерировано исключение ValidationException с сообщением об ошибке.

Таким образом, вы можете провалидировать список на Laravel в кастомном правиле, определив класс правила валидации с методами passes() и message(), а затем использовать его в правилах валидации вашей формы или запроса. Это позволяет удобно и гибко контролировать корректность списка данных.