您好我有一张图片上传表格
<input type="file" name="ad_image[]">
&#13;
我只想要一个图像而其他图像是可选的。 这是我的验证规则,不起作用:
'ad_image.*' => 'required|min:1|mimes:png,gif,jpeg,jpg|max:300',
我试过这个:
'ad_image' => 'required|array|min:1|mimes:png,gif,jpeg,jpg|max:300',
也无效,当我上传jpg文件时出现错误&#34;广告图片必须是以下类型的文件:png,gif,jpeg,jpg。&#34;
请帮助解决此问题
答案 0 :(得分:0)
您可以尝试:
public function rules()
{
$rules = [
'ad_image0'=> 'image|required|mimes:png,gif,jpeg,jpg|max:300'
];
$nbr = count($this->input('ad_image')) - 1;
foreach(range(0, $nbr) as $index) {
$rules['ad_image.' . $index] ='image|mimes:png,gif,jpeg,jpg|max:300';
}
return $rules;
}
答案 1 :(得分:0)
我决定制定自己的自定义验证规则: 此代码位于AppServiceProvider的引导方法
中public function boot()
{
Validator::extend('require_one_of_array', function($attribute, $value, $parameters, $validator) {
if(!is_array($value)){
return false;
}
foreach ($value as $k => $v){
if(!empty($v)){
return true;
}
}
return false;
});
}
验证消息被手动添加为验证器的第三个参数
$messages = [
'require_one_of_array' => 'You need to upload at least one pic.',
];
这是用来确保至少上传一个图像(这是在规则数组中):
'ad_image' => 'require_one_of_array',
'ad_image.*' => 'mimes:jpeg,bmp,png|max:300',