Laravel 8 API Form Request 如何对可选嵌套JSON对象实现条件校验
解决方案
你只需要给user.*.car.color.front和user.*.car.color.back两个字段加上required_with校验规则即可,该规则会仅在指定的color字段存在且不为空时,才触发当前字段的必填校验。
修改后的完整校验规则如下:
public function rules() { return [ 'user' => 'required|array', 'user.*.name' => 'required|string', 'user.*.car' => 'required|array', 'user.*.car.model' => 'required|string', 'user.*.car.color' => 'nullable|array', 'user.*.car.color.front' => 'required_with:user.*.car.color|string', 'user.*.car.color.back' => 'required_with:user.*.car.color|string', ]; }
规则说明
required_with:user.*.car.color:当请求中存在user.*.car.color字段且值不为null时,才要求当前字段(front/back)必须存在且为字符串;如果color字段未传或为null,会自动跳过这两个字段的校验。- 如果需要额外限制
color对象传值时必须为非空数组,可以给user.*.car.color补充min:2规则,避免用户传入空的color对象。
内容的提问来源于stack exchange,提问作者vlauciani
相关产品推荐
相关产品推荐

