我有一个带有一些输入和一个file input
的表单。
一切都很好但有一个奇怪的问题!
以下是我的验证码:
$validator = \Validator::make($request->all(), [
'name' => 'required|max:25|min:3',
'email' => 'required|email|max:35|min:5',
'phone' => 'required|max:15|min:7',
'file' => 'max:2000|mimes:jpeg,png,doc,docs,pdf',
]);
问题是我没有为required
设置file
但我不知道为什么当我提交表单时说:
该文件必须是以下类型的文件:jpeg,png,doc,docs,pdf
实际上我想file
是可选的。
我试过sometimes
:
'file' => 'sometimes|max:2000|mimes:jpeg,png,doc,docs,pdf',
但它没有用。
谢谢你的任何建议。
更新
我的Ajax请求:
$(document).ready(function () {
$("#submit").click(function (event) {
event.preventDefault();
var formData = new FormData();
formData.append('name', $('#name').val());
formData.append('email', $('#email').val());
formData.append('phone', $('#phone').val());
formData.append('telegram', $('#telegram').val());
formData.append('contactWith', $('#contactWith').val());
formData.append('orderType', $('#orderType').val());
formData.append('price', $('#price').val());
formData.append('uiLevel', $('#uiLevel').val());
formData.append('codingType', $('#codingType').val());
formData.append('maxTime', $('#maxTime').val());
formData.append('file', $('#file')[0].files[0]);
formData.append('message', $('#message').val());
$.ajax({
type: "POST",
url: "{{route('orders.store')}}",
headers: {
"X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content")
},
data: formData,
contentType: false,
processData: false,
success: function (msg) {
},
}, "json")
})
});
我的文件输入:
<div class="form-group">
<label for="file">send file</label>
<br>
<label id="browse-label" for="file"><i class="fa fa-upload" aria-hidden="true"></i>browse
<input type="file" id="file">
</label>
<span id="filename">no file chosen</span>
</div>
答案 0 :(得分:1)
使用 nullable
规则
文档:https://laravel.com/docs/8.x/validation#a-note-on-optional-fields
这给了你:
'file' => 'nullable|max:2000|mimes:jpeg,png,doc,docs,pdf',
答案 1 :(得分:0)
您可以按照以下方式执行此操作
$validator = \Validator::make($request->all(), [
'name' => 'required|max:25|min:3',
'email' => 'required|email|max:35|min:5',
'phone' => 'required|max:15|min:7',
]);
if($request->file){
$validator = \Validator::make($request->all(), [
'file' => 'max:2000|mimes:jpeg,png,doc,docs,pdf',
]);
}