我正在尝试验证日期字段,以便active_from需要是 active_until 之前的日期,而active_until需要是active_from之后的日期。
这两个字段都被隐藏和禁用,直到用户在名为active的选择字段上选择 Yes 。
当用户选择“是”时,active_from出现并变为必需,并且active_until也出现,但它是可选的,这就是我的问题,因为只要active_until未填充,验证就会失败。
据我了解,如果该字段可能会或可能不会启用/存在,我应该使用有时规则,该规则仅在该字段存在且已启用时检查其他验证。例如
'active_from' => 'sometimes|required_if:active,yes|date|before:active_until',
如果一个字段可能会或可能不会被填充,则应该使用可为空规则,但如果该字段可能存在或可能不存在,是否也应该使用它?例如
'active_until' => 'sometimes|nullable|date|after:active_from',
所以我的问题是如何检查active_from是否在active_until之前,只有当active被选择为Yes并且只有active_until被填充时。
我是否正确使用了规则,active_from应该只使用有时规则还是也应该使用可空规则?
代码:
$validated = $request->validate([
'title' => 'required|string|min:3|max:30|unique:categories',
'description' => 'nullable|string|min:3|max:255',
'active' => 'required|in:yes,no',
'active_from' => 'sometimes|required_if:active,yes|date|before:active_until',
'active_until' => 'sometimes|nullable|date|after:active_from',
'highlighted' => 'sometimes|required_if:active,yes|in:yes,no',
'highlighted_from' => 'sometimes|required_if:highlighted,yes|date|before:highlighted_until',
'highlighted_until' => 'sometimes|nullable|date|after:highlighted_from',
]);
慕莱坞森
GCT1015