【问题标题】:Laravel 5.4 sometimes validation rules not workingLaravel 5.4 有时验证规则不起作用
【发布时间】:2017-06-21 17:17:09
【问题描述】:

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

【问题讨论】:

  • 您使用的日期格式是什么?
  • 我使用这种格式YYYY-MM-DD

标签: laravel laravel-validation laravel-5.4


【解决方案1】:

问题是由于 Http\Kernel.php 中的 \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class 造成的。

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

它可以用 nullable

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

}

来自Laravel docs

可空

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

【讨论】:

  • 很好的帮助。在 Laravel 5.6 中也能完美运行。
  • 我收到相同的“不是有效日期”,而且我总是通过 Postman 发送“2018-03-05”之类的日期
  • 你简直拯救了我的一天。
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 2018-01-12
  • 2020-03-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 2014-11-29
  • 2020-07-17
相关资源
最近更新 更多