如何解决Laravel 表单请求验证规则“必需”不适用于空值
我有 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 控制器中,我有带有表单请求验证器的 store 方法
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 组件中,默认字段值为 null。当我提交空表单时,我预计验证将失败并返回需要字段的消息,但我得到的唯一错误是关于文件 mime、大小和日期。什么都不需要...
从 Laravel 文档中我了解到必需的规则必须返回错误。 “如果满足以下条件之一,则字段被视为“空”:值为空...” 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 中禁用它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。