即使没有上传输入文件,Laravel mimes 验证也总是被调用(不使用必需的规则)
Posted
技术标签:
【中文标题】即使没有上传输入文件,Laravel mimes 验证也总是被调用(不使用必需的规则)【英文标题】:Laravel mimes validation always called even if no input file is uploaded (Not used required rule) 【发布时间】:2017-10-31 02:20:54 【问题描述】:我只对文件输入字段使用了单一验证规则。这就是哑剧规则。如果没有上传文件,我想跳过这条规则,所以我没有使用“必需”规则。但即使没有上传文件,它也总是显示 mime 类型的消息。我刚刚添加了测试所需的规则,当时它显示了所需的错误消息。仅当使用带有 jquery.form.js 的 ajax 提交表单时才会出现此问题
【问题讨论】:
将sometimes
添加到您的规则中。
【参考方案1】:
您可以为此使用sometimes
验证类型。
'file' => 'sometimes|mimes:jpeg,png'
在场时验证
在某些情况下,您可能希望仅当输入数组中存在该字段时才对该字段运行验证检查。要快速完成此操作,请将有时规则添加到您的规则列表中。
Official Laravel docs
【讨论】:
【参考方案2】:您可以使用sometimes
规则。
'photo' => 'sometimes|mimes:jpeg,bmp,png'
您可以在此处查看更多信息https://laravel.com/docs/5.4/validation#conditionally-adding-rules
【讨论】:
仍然无法以我的形式工作。我认为问题在于使用 jquery.form js 使用 ajax 表单提交时【参考方案3】:我最近在 ajax 上传时遇到了同样的问题,并使用
处理了文件验证public function rules()
$rules = [
'invitation_message' => 'required'
];
if (request()->hasFile('invitation_excel_sheet'))
$rules = array_merge($rules, [
'invitation_excel_sheet' => 'mimes:xlsx,csv'
]);
return $rules;
【讨论】:
【参考方案4】:另一种方法是使用exclude_if
:
public function rules()
return [
'link' => 'sometimes',
'newPdf' => 'exclude_if:link,null|mimes:pdf',
];
【讨论】:
以上是关于即使没有上传输入文件,Laravel mimes 验证也总是被调用(不使用必需的规则)的主要内容,如果未能解决你的问题,请参考以下文章