Laravel 验证:当不需要字段时排除尺寸检查

Laravel validation: exclude size check when field not required

我在 Laravel 应用程序中进行了验证,但我似乎无法使其正常工作。

我正在对 Supplier 模型进行验证,而不是请求。

public function requestOpening(Supplier $supplier)
{
    $validator = Validator::make($supplier->toArray(), $this->fullValidationRules());
    if ($validator->fails()) {
        return redirect("open-new/supplier/{$supplier->id}")
            ->withErrors($validator);
    }
    // ...
}

我希望仅在 is_hfm == 1 时需要 hfm_code。我都试过了:

'hfm_code' => 'size:6|exclude_if:is_hfm,0',

'hfm_code' => 'size:6|required_if:is_hfm,1',

在这两种情况下我都收到验证错误:

The hfm code must be 6 characters.

如何在 is_hfm == 0 时忽略尺寸检查?

这里的顺序似乎很重要:

'hfm_code' => 'exclude_if:is_hfm,0|size:6'

应该可以。我 认为 这是因为它按顺序评估规则,如果 exclude_if 通过

将忽略剩余的规则