0

我正在处理表单请求,我有一个关于如何将它与可选输入对象一起使用的问题。

我的 API 得到一个简单的输入 JSON,例如:

{
    "user": [
        {
            "name": "Valentino",
            "car": {
                "model": "ferrari",
                "color": {
                    "front": "red",
                    "back": "black"
                }
            }
        },
            "name": "Stefano",
            "car": {
                "model": "mercedes"
            }
        }
    ]
}

控制器:

public function insertUser(StoreUserRequest $request) {
}

For 请求验证类:

public function rules()
{
  return [ 
    'user' => 'required|array',
    'user.*.name' => 'string|required',
    'user.*.car' => 'required|array', 
    'user.*.car.model' => 'required|string', 
    'user.*.car.color' => 'nullable|array',  // could be present or not 
    'user.*.car.color.front' => 'required|string',  // should be validated only if exists 'color'
    'user.*.car.color.back' => 'required|string', // should be validated only if exists 'color'
  ];
}

color对象可以是输入 JSON 中的可选对象;我如何设置StoreUserRequest.php类以color仅在存在时才验证对象?

非常感谢!

4

1 回答 1

0

@Tippin 告诉我一个使用required_with规则的解决方案:

public function rules()
{
  return [ 
    'user' => 'required|array',
    'user.*.name' => 'string|required',
    'user.*.car' => 'required|array', 
    'user.*.car.model' => 'required|string', 
    'user.*.car.color' => 'nullable|array',  // could be present or not 
    'user.*.car.color.front' => 'required_with:user.*.car.color|string',
    'user.*.car.color.back' => 'required_with:user.*.car.color|string',
  ];
}

谢谢

于 2021-11-11T17:12:30.057 回答