Laravel 5 中的图像数组验证
Posted
技术标签:
【中文标题】Laravel 5 中的图像数组验证【英文标题】:Image array validation in Laravel 5 【发布时间】:2015-10-10 15:11:54 【问题描述】:我的应用程序允许用户同时上传多个图像文件,但是我不知道如何验证图像数组。
$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'
);
验证会通过,但是数组里面的图片还没有被验证过。
This answer 使用关键字 each 来为验证规则添加前缀,但在 laravel 4.2 中,这在 Laravel 5 中似乎不起作用。
我一直在尝试遍历数组并分别对每个图像进行验证,但是是否有内置函数可以为我执行此操作?
【问题讨论】:
【参考方案1】:这对我有用
$rules = array(
...
'image' => 'required',
'image.*' => 'image|mimes:jpg,jpeg'
);
按这个顺序做。
【讨论】:
【参考方案2】:我使用了类似于 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);
【讨论】:
【参考方案3】:同意@Badmus Taofeeq 的回答,但它将接受具有任何值的图像字段,而无需检查字段是否为数组。你需要添加一些小东西
请参阅下面的代码以进行正确的验证
$rules = array(
'image' => 'required|array',
'image.*' => 'image|mimes:jpg,jpeg'
);
【讨论】:
以上是关于Laravel 5 中的图像数组验证的主要内容,如果未能解决你的问题,请参考以下文章