Laravel 5.4有时验证规则不起作用

时间:2017-02-04 10:44:44

标签: laravel laravel-validation laravel-5.4

我正在尝试仅在日期字段存在时验证它。在我从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改变了以前工作的东西!!!

1 个答案:

答案 0 :(得分:32)

问题发生的原因是Http \ Kernel.php中的\ Illuminate \ Foundation \ Http \ Middleware \ ConvertEmptyStringsToNull :: class。

当您提交空日期字段时,此中间件会将空字符串转换为空。然后验证返回无效日期错误。您可以查看docs了解详情。

可以使用可以为空的

进行修复
public function rules()
{
    return [
        'available_from' => 'sometimes|nullable|date',
    ];

}

来自Laravel docs

  

可空

     

验证字段可能为空。这特别有用   在验证原语时,如字符串和整数可以   包含空值。