Как я могу проверить входные данные массива в Laravel? - PullRequest
0 голосов
/ 27 мая 2018

Это мой код:

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() пусто при ошибке.

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

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

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

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

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

@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();
    }

Я советую вам прочитать документацию.

0 голосов
/ 27 мая 2018

Попробуйте:

$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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...