我的应用程序允许用户同时上传多个图像文件,但是我不知道如何验证图像数组。
$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'