拉威尔5.7。我有一个模型Foo
的表单请求验证。模型有一个可选字段bar
,该字段必须是数组。如果存在,则必须包含两个键,bing
和bang
。但是如果数组不存在,显然不应该验证这两个键。
这是我到目前为止所拥有的:
return [
'bar' => 'bail|array|size:2',
'bar.bing' => 'required|numeric',
'bar.bang' => 'required|numeric',
];
当我发送一个带有条的请求时,这就起作用了。但是当我发送一个没有
条
数组的请求时,我仍然会得到验证错误
bar.bing字段是必需的
bar.bang字段是必需的
如何仅在存在bar
时使其成为必需的?
试试这个规则
return [
'bar' => 'nullable|bail|array|size:2',
'bar.bing' => 'required_with:bar|numeric',
'bar.bang' => 'required_with:bar|numeric',
]
required_with的文档
在这种情况下我倾向于这样做
public function rules(): array
{
$rules = [
// ...
];
if ($this->bar) {
$rules['bar'] = 'array|size:2';
$rules['bar.bing'] = 'required|numeric';
$rules['bar.bang'] = 'required|numeric';
}
return $rules;
}