Как я могу проверить входные данные массива в Laravel?

Это мой код:

public function store(Request $request)
{
    try {
        $this->validate($request, [
            'activity_licenses' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
        ]);
    } catch (\ValidationException $e) {
        return [false, $e->getMessage()];
    }
    .
    .
    .

Фактически activity_licenses - это массив. Это HTML:

<input type = "file" name = "activity_licenses[] />
<input type = "file" name = "activity_licenses[] />

Как я могу это подтвердить? И что еще более важно, как я могу определить причину отказа (сообщение об ошибке)? В настоящее время $e->getMessage() пуст в случае сбоя.

Вы проверили: laravel.com/docs/5.6/validation#validating-arrays?

Oluwatobi Samuel Omisakin 27.05.2018 12:28

Возможный повторяющийся вопрос. Ссылка на решение

Anowar Hossain 27.05.2018 12:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
60
2

Ответы 2

Пытаться:

$input_data = $request->all();

$validator = Validator::make(
    $input_data, [
    'image_file.*' => 'required|mimes:jpg,jpeg,png,bmp|max:20000'
    ],[
        'image_file.*.required' => 'Please upload an image',
        'image_file.*.mimes' => 'Only jpeg,png and bmp images are allowed',
        'image_file.*.max' => 'Sorry! Maximum allowed size for an image is 20MB',
    ]
);

if ($validator->fails()) {
    // Validation error.. 
}

https://stackoverflow.com/a/38327539/3475207

Проверка массива описана в Документ Laravel, и в вашем случае она должна быть:

$this->validate($request, [
        'activity_licenses.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
    ])

Используя $this->validate() в контроллере, сообщения об ошибках автоматически передаются вашим представлениям, и переменная $errors хранит их. Вы должны проверить: Работа с сообщениями об ошибках в Документ Laravel

Пример (взят из документа):

@if ($errors->any())
<div class = "alert alert-danger">
    <ul>
        @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
    </ul>
</div>

@endif

Вы можете выполнить проверку, вызвав валидатор вручную следующим образом:

$validator = Validator::make($request->all(), [
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

    if ($validator->fails()) {
        return redirect('post/create')
                    ->withErrors($validator)
                    ->withInput();
    }

My advice is that you should read the documentation.

Другие вопросы по теме