Laravel 5中的图像数组验证


Image array validation in Laravel 5

我的应用程序允许用户同时上传多个图像文件,但是我不知道如何验证图像数组。

$input = Request::all();
    $rules = array(
        ...
        'image' => 'required|image'
    );
    $validator = Validator::make($input, $rules);
    if ($validator->fails()) {
        $messages = $validator->messages();
        return Redirect::to('venue-add')
            ->withErrors($messages);
    } else { ...

如果我将验证规则更改为

,则该验证将失败,因为'image'是一个数组。
    $rules = array(
        ...
        'image' => 'required|array'
    );

验证将通过,但是数组中的图像还没有被验证。

这个答案使用关键字each作为验证规则的前缀,但是这在laravel 4.2和laravel 5中似乎不起作用。

我一直试图通过数组和验证每个图像单独迭代,但有一个内置的功能来为我做这件事吗?

这对我有用

$rules = array(
     ...
     'image' => 'required',
     'image.*' => 'image|mimes:jpg,jpeg'
);

按顺序做

我使用了一种类似Jeemusu推荐的技术,在初始验证确保图像数组存在之后,使用第二个验证器遍历数组,确保数组中的每个项实际上都是图像。下面是代码:

$input = Request::all();
$rules = array(
    'name' => 'required',
    'location' => 'required',
    'capacity' => 'required',
    'description' => 'required',
    'image' => 'required|array'
);
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
    $messages = $validator->messages();
    return Redirect::to('venue-add')
        ->withErrors($messages);
}
$imageRules = array(
    'image' => 'image|max:2000'
);
foreach($input['image'] as $image)
{
    $image = array('image' => $image);
    $imageValidator = Validator::make($image, $imageRules);
    if ($imageValidator->fails()) {
        $messages = $imageValidator->messages();
        return Redirect::to('venue-add')
            ->withErrors($messages);
    }
}

同意@Badmus Taofeeq的回答,但它将接受图像字段的任何值,没有检查字段是否是数组。你需要添加一些小东西

请参考下面的代码以获得正确的验证

$rules = array(
     'image' => 'required|array',
     'image.*' => 'image|mimes:jpg,jpeg'
);

这对我有用。在ProductRequest.php文件:

'product_images' => 'required|array',
'product_images.*' => 'image|mimes:jpg,jpeg'