Laravel 5.1:自定义验证class

Laravel 5.1: custom validation class

我做了这个自定义验证 class, CustomValidator.php:

<?php

namespace App;

use Illuminate\Validation\Validator;

class CustomValidator extends Validator{

    public function validateRequiredWithOneOf($attribute, $value, $parameters)
    {
        $data = $this->getData();
        foreach ($parameters as $p) {
            if ( array_get($data,$p) != null) {return true;}
        }

        return false;
    }

    public function replaceRequiredWithOneOf($message, $attribute, $rule, $parameters)
    {
        return $this->replaceRequiredWith($message, $attribute, $rule, $parameters);
    }
}

我在 CustomRequest.php

中调用
'input_field' => 'required_with_one_of:first,second,third',

如果选择了属性 input_field,则至少还必须选择一个参数字段 (firstsecondthird)。

如果我在 AppServiceProvider.phpboot() 方法中定义自定义验证,则一切正常,但如果我创建此 CustomValidator class 并从 AppServiceProvider.php 中删除代码,则无效。

这并不让我感到惊讶,因为我在 CustomRequest class.

中调用 Validator 而不是 CustomValidator

My CustomRequest class extends Request classs extends FormRequest class 其中提到了 Validator不少地方。我真的不知道从哪里开始。 如果需要,我可以在此处 c/p FormRequest class。

谁能帮我解决这个问题?

创建CustomValidator后只需在boot()方法中调用resolver方法:

\Validator::resolver(function($translator, $data, $rules, $messages)
{
    return new CustomValidator($translator, $data, $rules, $messages);
});

此外,在 CustomRequest 中调用它也没有区别。应该可以正常工作。