我需要一些关于Laravel表单验证的帮助:
刀片:
<input type="datetime-local" class="form-control" name="date[]">
验证:
$now = Carbon::now();
$after = Carbon::createFromDate(2025,01,01);
return request()->validate([
'name' => ['required'],
'description' => ['required'],
'date' => ['required', 'before:'. $now, 'after:'.$after]
]);
我认为这应该有效,但它总是抛出和错误的输入值是什么并不重要。我的猜测是日期格式不匹配,Laravel无法进行比较。我用不同的形式进行了基本相同的比较,但只有日期类型,这非常有效。
我在这里找到了一些类似的问题,但对我来说什么都不管用。我没有主意了。其他人也有同样的问题吗?
感谢提前回答
根据用于date
字段的验证规则,总是抛出错误是非常合理的。原因是您希望date
在当前时间之前,同时在2025-01-01之后不能产生真实的输出。
你需要做的是将你的规则值反转为
'date' => 'required|array', // check date is set and is an array
'date.*' => ["before:$after", "after:$now"] // each element in the array needs to follow the before and after rules
通过这种方式,您要求您的每个date
值在当前白天之后为,在2025-01-01之前为<strong]。>