我正在构建一个上传多个文件的表单,它工作正常,但问题是我的验证消息,我的验证是检查文件的mime类型。
假设上传的文件名称为 filename
验证讯息: file.0必须是以下类型的文件:pdf,doc,docx,jpeg,jpg,png,bnp。
我想将其更改为 文件名必须是以下类型的文件:pdf,doc,docx,jpeg,jpg,png,bnp。
我的表格:
{!! Form::open(['route' => ['file.store'], 'method'=> 'POST', 'id' => 'file_form','files' => 'true']) !!}
{!!Form::FILE('file[]', ['id' => 'file','multiple' =>true])!!}
<button type="submit" name="submit">save</button>
{!! Form::close() !!}
我的formRequest验证
foreach ($this->file as $key => $val)
{
$rules['file.' . $key] = 'mimes:pdf,doc,docx,jpeg,jpg,png,bnp|extension|max:10240'
}
return rules;
答案 0 :(得分:3)
您好,如果您正在使用FormRequest进行验证。
这就是我如何实现它的。 这是一个例子。
public function messages()
{
$messages = [];
foreach($this->request->get('items') as $key => $val)
{
$messages['items.'.$key.'.max'] = 'The field labeled "Book Title '.$key.'" must be less than :max characters.';
}
return $messages;
}
答案 1 :(得分:2)
使用自定义验证消息
在validation.php
文件夹
resource/lang/en/
中的自定义数组中添加此行
'custom' => [
.........
'file.*' => [
'mimes' => 'The filename must be a file of type: :values.',
],
我建议将file
重命名为unique_name
,以免与名称
答案 2 :(得分:0)
我为你的答案适合所有人,我找到了另一种适合我项目的方法。我创建了名为 custom_mimes 的自定义验证,以根据mime类型验证文件类型,并将custom replacer (:filename)添加到此验证中。
\Validator::extend('custom_mimes', function ($attribute, $file, $parameters, $validator)
{
$validator->addReplacer('custom_mimes', function ($message, $attribute, $rule, $parameters) use ($file)
{
$values=implode(',',$parameters);
return str_replace([':filename',':values'], [$file->getClientOriginalName(),$values], $message);
});
$mime_type =$file->guessExtension();
return in_array($mime_type,$parameters);
});
并在 validation.php
中'custom_mimes' => 'The :filename must be a file of type: :values.',
所以我的关键和价值观将是:
:filename =&gt;上传文件名
:values =&gt;'jpg,png,doc,docx'
答案 3 :(得分:0)
在表单请求中,您可以像下面这样简单地使用它:
public function messages()
{
$messages = [];
foreach($this->request->get('files') as $key => $val)
{
$messages['files.'.$key. ". max"] = 'The file field cannot be greater then 10M';
}
return $messages;
}