Laravel验证是否需要数组元素(如果存在数组)

时间:2018-09-19 13:39:53

标签: php laravel validation

Laravel 5.7。我有一个针对模型Foo的表单请求验证。该模型具有一个可选字段bar,该字段必须是一个数组。如果存在,则它必须包含两个键,bingbang。但是,如果缺少该数组,则显然不应验证这两个键。

这是我到目前为止所拥有的:

return [
    'bar'      => 'bail|array|size:2',
    'bar.bing' => 'required|numeric',
    'bar.bang' => 'required|numeric',
];

当我发送存在bar数组的请求时,此方法有效。但是当我发送不带bar数组的请求时,仍然会收到验证错误

  

bar.bing字段为必填项

     

bar.bang字段为必填项

如何使它们仅在存在bar时才需要?

2 个答案:

答案 0 :(得分:1)

尝试使用此规则

scheduleAtFixedRate()

Docs for required_with

答案 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;
}