2 回答
TA贡献1810条经验 获得超4个赞
对于复杂的验证规则
use Illuminate\Support\Facades\Validator;
....
$data = $request->all();
$validator = Validator::make($data,[
//...your unconditional rules goes here
]);
//your conditional rules goes here
$validator->sometimes('active_form', 'before:active_until', function ($request) {
return $request->filled('active_until');//if here return true,rules will apply
});
重要链接
TA贡献1827条经验 获得超4个赞
我终于能够弄清楚了。
这是我的固定代码:
$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' => 'required_if:active,yes|date',
'active_until' => 'nullable|date|after:active_from',
'highlighted' => 'required_if:active,yes|in:yes,no',
'highlighted_from' => 'required_if:highlighted,yes|date',
'highlighted_until' => 'nullable|date|after:highlighted_from',
]);
即使用户在活动选择上选择“是”,我也不需要检查两个日期是可选的,我只需要检查active_until日期(可选的日期)以查看它是否是active_from日期之后的有效日期。
这样,即使用户没有填写active_until日期,验证也不会失败,因为我在该字段上有可为空的规则。
至于有时规则,据我了解,仅当请求中可能存在或不存在字段时才需要使用它,例如
'active' => 'sometimes|required|in:yes,no',
这样,仅当它存在于请求中时才需要它,但由于我在我的代码中使用 required_if,所以它不是必需的,因为它取决于其他字段的值。
- 2 回答
- 0 关注
- 121 浏览
添加回答
举报