在Laravel 5.7中,我正在使用表单请求验证:
public function rules()
{
return [
'age' => 'integer',
'title' => 'string|max:50'
];
}
如果我使用此有效负载向我的API提交请求:
{
"age": 24,
"title": ""
}
Laravel返回错误:
{
"message": "The given data was invalid.",
"errors": {
"title": [
"The title must be a string."
]
}
}
我希望它能够通过验证,因为标题是一个字符串,尽管是空的。验证应如何制定以允许使用空字符串?
答案 0 :(得分:4)
您需要nullable
来允许一个空字符串
public function rules()
{
return [
'age' => 'integer',
'title' => 'nullable|string|max:50'
];
}
答案 1 :(得分:1)
尝试查看ConvertEmptyStringsToNull
中间件是否处于活动状态,那么它将解释此行为,请参见docs
答案 2 :(得分:0)
也许添加一个min
约束会成功吗?
public function rules()
{
return [
'age' => 'integer',
'title' => 'string|min:0|max:50'
];
}
答案 3 :(得分:0)
我会尝试
public function rules()
{
return [
'age' => 'integer',
'title' => 'string|sometimes'
];
}
这只会在标题存在时验证标题。
答案 4 :(得分:0)
存在 present
规则,检查存在密钥但让它为空。
#present
现在 验证字段必须存在于输入数据中,但可以为空。