我正在尝试仅在日期字段存在时验证它。在我从Laravel 5.2升级到5.4
之前,它工作正常在Laravel 5.2中,这条规则可行:
public function rules()
{
return [
'available_from' => 'date',
];
}
在5.4中,它返回验证错误The available from is not a valid date.
我尝试了这个新规则
public function rules()
{
return [
'available_from' => 'sometimes|date',
];
}
仍有同样的错误,似乎sometimes
规则根本不影响验证。我怎样才能摆脱这个错误?
我不明白为什么Laravel改变了以前工作的东西!!!
答案 0 :(得分:32)
问题发生的原因是Http \ Kernel.php中的\ Illuminate \ Foundation \ Http \ Middleware \ ConvertEmptyStringsToNull :: class。
当您提交空日期字段时,此中间件会将空字符串转换为空。然后验证返回无效日期错误。您可以查看docs了解详情。
可以使用可以为空的
进行修复public function rules()
{
return [
'available_from' => 'sometimes|nullable|date',
];
}
来自Laravel docs:
可空
验证字段可能为空。这特别有用 在验证原语时,如字符串和整数可以 包含空值。