Laravel-错误“;传递给Lightning\Validation\Factory::make()的参数2必须是array类型,对象为“给定”;

Laravel-错误“;传递给Lightning\Validation\Factory::make()的参数2必须是array类型,对象为“给定”;,laravel,validation,Laravel,Validation,这个代码怎么了 class DeleteDetail extends FormRequest { public function authorize() { return true; } public function rules() { $request = Request::all(); $rules = [ 'hobby' => [ 'string',

这个代码怎么了

class DeleteDetail extends FormRequest {

    public function authorize() {
        return true;
    }

    public function rules() {
        $request = Request::all();
        $rules = [
            'hobby' => [
                'string',
                'between:3,20',
                Rule::exists('user_hobby')->where(function ($query) use ($request) {
                    $query->where('hobby', $request['hobby'])->where('user_id', Auth::user()->id);
                }),
            ],
        ];

        return Validator::make($request, $rules);
    }

}
我收到的错误:


传递给Illumination\Validation\Factory::make()的参数2必须是array类型,给定的对象

如果从
规则
方法本身内部返回了错误的值,则应返回包含验证规则的
数组
,而不是
Validation::make

public function rules() {
    ...

    return $rules;
}

rules
函数应返回包含规则的数组

public function rules() {
    $request = Request::all();
    $rules = [
        'hobby' => [
                'string',
                'between:3,20',
                Rule::exists('user_hobby')->where(function ($query) use ($request) {
                    $query->where('hobby', $request['hobby'])->where('user_id', Auth::user()->id);
                }),
            ],
        ];

    return $rules;
}
然后在控制器中:

public function store(DeleteDetail $request) 
{
   // the code in here has passed the validation..
}

您正在尝试创建请求验证类吗?谢谢您的帮助。