Laravel 5.4 有时验证规则不起作用
Posted
技术标签:
【中文标题】Laravel 5.4 有时验证规则不起作用【英文标题】:Laravel 5.4 sometimes validation rules not working 【发布时间】: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
【参考方案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”之类的日期 你简直拯救了我的一天。以上是关于Laravel 5.4 有时验证规则不起作用的主要内容,如果未能解决你的问题,请参考以下文章