将上传到 Laravel 验证消息的文件名添加



我上传了一组文件。在validation.php语言文件中,我添加了自定义错误消息:

'custom' => [
'images.*'      => [
'dimensions' => 'Image ":file" must have a min-height of :min_height pixels and a min-width of :min_width pixels.',
'image'      => 'You can only upload images to your gallery. The file ":file" was not an image.',
'mimes'      => 'Your image ":file" was an invalid type. Images can only be of the following types: :mimes',
'max'        => 'Max file size for each image is :max MB. Your image ":file" is too large.'
]
]

由于正在上传多个文件,我希望能够在显示验证错误时指定错误消息与哪个文件相关。

@if($errors->has('images.*'))
@foreach ($errors->get('images.*') as $message)
<div class="help-block has-error">{{ head($message) }}</div>
@endforeach
@endif

但是,:file不会自动填充消息,我不知道如何获取它。

我将如何做到这一点?是否有其他占位符或方法可以使用?

我有同样的问题,我尝试做的是获取数组中的文件名并将其放入自定义错误消息中,具体取决于验证类型在我的示例中,我将根据图像类型(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());
//...
} 

在秃头文件中

//...
<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>  
//...

您可以对文件大小执行相同的操作。

另外,我使用[此插件]上传文件输入 [此插件]:https://plugins.krajee.com/file-input#top

拉拉维尔5.8版

我希望这对你有帮助。 如果有人有更好的方法,请讨论。

相关内容

  • 没有找到相关文章

最新更新