我有同样的问题,我尝试做的是获取数组中文件的名称并将其放入自定义错误消息中,这取决于我的示例中的验证类型,我将根据图像类型(jpeg, png, jpg, SVG, BMP)
在控制器文件中:
//...
public function store(Request $request)
{
$rules = [ 'imagefile' => 'required',
'imagefile.*' => 'image|mimes:jpeg,png,jpg,svg,bmp', // working on filse size custom message
];
// To get name of non image file and display in it in error message
if($request->hasfile('imagefile')){
$names = array(); // array for all names of files
foreach($request->Bank_Logo as $file){
// check file extension
if($file->getClientOriginalExtension() != 'jpeg' &&
$file->getClientOriginalExtension() != 'png' &&
$file->getClientOriginalExtension() != 'jpg' &&
$file->getClientOriginalExtension() != 'svg' &&
$file->getClientOriginalExtension() != 'bmp'){
$name= $file->getClientOriginalName (); // get file name
$names[] = $name; // set name of file to array
}
}
// check names array if it empty or not
if(!empty($names)){
/* but all names in custom error,message
* implode funaction to convert array to string
*/
$messages = [
'imagefile.*image' => 'The ' . implode(" and ",$names) . ' not an image file.',
'imagefile.*mimes' => 'The ' . implode(" and ",$names) . ' must be a file of type: jpeg, png, jpg, svg, bmp.'
];
}
}
if(!empty($messages)){
$result = Validator::make($request->all(), $rules, $messages); // with custom message
//dd($result);
}
else{
$result = Validator::make($request->all(), $rules); // without custom message
//dd('empty');
}
if($result->fails())
{
return back()->withErrors($result)->withInput($request->all());
}
dd($request->all());
//...
}
在 balde 文件中
//...
<form>
label class="form-control-label mt-3">{{ __('imagefileLogo') }}</label>
<div class="file-loading">
<input id="imagefile" name="imagefile[]" type="file" multiple>
</div>
@if ($errors->has('imagefile'))
<span class="invalid-feedback" style="display: block;" role="alert">
<strong>{{ $errors->first('imagefile') }}</strong>
</span>
@endif
@if ($errors->has('imagefile.*')) <!--in case if we have multiple file-->
<span class="invalid-feedback" style="display: block;" role="alert">
<strong>{{ $errors->first('imagefile.*') }}</strong>
</span>
@endif
<form>
//...
你可以对文件大小做同样的事情。
Laravel 5.8 版
我希望这对您有所帮助。
如果有人有更好的方法请讨论。