Php 允许空字符串的Laravel字符串验证
在Laravel 5.7中,我使用表单请求验证:Php 允许空字符串的Laravel字符串验证,php,laravel,validation,Php,Laravel,Validation,在Laravel 5.7中,我使用表单请求验证: public function rules() { return [ 'age' => 'integer', 'title' => 'string|max:50' ]; } 如果我使用此有效负载向API提交请求: { "age": 24, "title": "" } Laravel返回错误: { "message": "The given data was inva
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."
]
}
}
我希望它能够通过验证,因为标题是一个字符串,尽管是空的。验证应该如何制定以允许空字符串?您需要
可空
才能允许空字符串
public function rules()
{
return [
'age' => 'integer',
'title' => 'nullable|string|max:50'
];
}
尝试查看
convertEmptyStringsToull
中间件是否处于活动状态,然后它将解释此行为,请参见添加min
约束是否可以解决此问题
public function rules()
{
return [
'age' => 'integer',
'title' => 'string|min:0|max:50'
];
}
我试试看
公共功能规则()
{
返回[
“年龄”=>“整数”,
“title”=>“string |有时”
];
}
这将仅在标题存在时验证标题 检查钥匙是否存在,但将其设为空,这是
present
规则
#出席
出席
验证中的字段必须存在于输入数据中,但可以为空
尝试将
当前的或所需的验证器添加为well@ka_linPresent和required不描述此属性,此属性不需要存在,也不是必需的。nullable-验证中的字段可能为null。这在验证可以包含空值的字符串和整数等基元时特别有用。这不允许空字符串,只会忽略空字符串,将其视为null
。如果要用空字符串覆盖现有的标题
字段,该怎么办?@GluePear如果要这样做,还需要从中间件中禁用\lightlight\Foundation\Http\Middleware\convertEmptyStringsToull::class
。该中间件将自动将空字符串转换为null。从数据库规范化的角度来看,最好使用null
作为值,而不是空字符串。我确认这确实有效。如果将该特定字段保留为空,null
将使其通过为空。谢谢,那很有用。我不确定是否要删除该中间件,以防它被其他地方使用。但它解释了这种行为。当你希望它总是存在时,它不能回答问题,尽管允许它是空的。