Laravel 5.7。我有一个针对模型Foo
的表单请求验证。该模型具有一个可选字段bar
,该字段必须是一个数组。如果存在,则它必须包含两个键,bing
和bang
。但是,如果缺少该数组,则显然不应验证这两个键。
这是我到目前为止所拥有的:
return [
'bar' => 'bail|array|size:2',
'bar.bing' => 'required|numeric',
'bar.bang' => 'required|numeric',
];
当我发送存在bar
数组的请求时,此方法有效。但是当我发送不带bar
数组的请求时,仍然会收到验证错误
bar.bing字段为必填项
bar.bang字段为必填项
如何使它们仅在存在bar
时才需要?
答案 0 :(得分:1)
答案 1 :(得分:0)
在这种情况下,我倾向于这样做
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;
}