Laravel 表单请求验证规则 "required" 不适用于空值
Laravel Form Request Validation rule "required" not working with null values
我有 Laravel/Vue 申请,我正在使用 axios 提交包含文件和其他一些数据的表单。
this.loading = true;
this.errors = {};
let formData = new FormData();
formData.append('type', this.type);
formData.append('file', this.file);
formData.append('date', this.date);
axios.post(`/file-upload`,
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then((response) => {
if (response.status === 200) {
this.loading = false;
// Success..
}
})
.catch((error) => {
this.loading = false;
if (error.response.status === 422) { // Laravel XHR Requests errors
this.errors = error.response.data.errors;
} else {
console.log(error);
}
});
在 Laravel 控制器中,我有带有表单请求验证器的存储方法
public function store(ImportRequest $request)
{
// Request is valid..
}
导入请求
public function rules()
{
return [
'type' => 'required',
'file' => 'required|mimes:xls,xlsx|file|max:512',
'date' => 'required|date',
];
}
在我的 vue 组件中,默认字段值为空。当我提交空表单时,我预计验证会失败,并且 return 消息指出字段是必需的,但我得到的错误只是关于文件 mime、大小和日期。没有关于要求...
Request Headers Form Data
根据 Laravel 文档,我了解到必需的规则必须 return 错误。
“如果以下条件之一为真,则字段被视为“空”:值为空...”
https://laravel.com/docs/8.x/validation#rule-required
目前我想到的唯一解决方案是 javascript 检查值是否为 null,只有在不为 null 时才添加到 FormData。在那种情况下,所需的规则会按我的预期工作
有什么想法吗?我做错了什么?
已更新 |已解决
null 被认为是字符串“null”
null 被视为验证所需条件的文本 'null'
(http 表单值中没有 Null
。
laravel认为Null
在postman中是一个空值。
更准确地说,有一个中间件可以将空值转换为 Null
值。如果您需要空值保持为空,可以在 kernel.php 中禁用它。
我有 Laravel/Vue 申请,我正在使用 axios 提交包含文件和其他一些数据的表单。
this.loading = true;
this.errors = {};
let formData = new FormData();
formData.append('type', this.type);
formData.append('file', this.file);
formData.append('date', this.date);
axios.post(`/file-upload`,
formData,
{
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then((response) => {
if (response.status === 200) {
this.loading = false;
// Success..
}
})
.catch((error) => {
this.loading = false;
if (error.response.status === 422) { // Laravel XHR Requests errors
this.errors = error.response.data.errors;
} else {
console.log(error);
}
});
在 Laravel 控制器中,我有带有表单请求验证器的存储方法
public function store(ImportRequest $request)
{
// Request is valid..
}
导入请求
public function rules()
{
return [
'type' => 'required',
'file' => 'required|mimes:xls,xlsx|file|max:512',
'date' => 'required|date',
];
}
在我的 vue 组件中,默认字段值为空。当我提交空表单时,我预计验证会失败,并且 return 消息指出字段是必需的,但我得到的错误只是关于文件 mime、大小和日期。没有关于要求...
Request Headers Form Data
根据 Laravel 文档,我了解到必需的规则必须 return 错误。 “如果以下条件之一为真,则字段被视为“空”:值为空...” https://laravel.com/docs/8.x/validation#rule-required
目前我想到的唯一解决方案是 javascript 检查值是否为 null,只有在不为 null 时才添加到 FormData。在那种情况下,所需的规则会按我的预期工作
有什么想法吗?我做错了什么?
已更新 |已解决
null 被认为是字符串“null”
null 被视为验证所需条件的文本 'null'
(http 表单值中没有 Null
。
laravel认为Null
在postman中是一个空值。
更准确地说,有一个中间件可以将空值转换为 Null
值。如果您需要空值保持为空,可以在 kernel.php 中禁用它。