Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php formatErrors()的声明应与laravel中的FormRequest::formatErrors兼容_Php_Laravel - Fatal编程技术网

Php formatErrors()的声明应与laravel中的FormRequest::formatErrors兼容

Php formatErrors()的声明应与laravel中的FormRequest::formatErrors兼容,php,laravel,Php,Laravel,为了在laravel中使用,我创建了一个StoreCourseRequest类,如下所示: namespace App\Http\Requests; use App\Http\Requests\Request; use Illuminate\Validation\Validator; class StoreCourseRequest extends Request { public function authorize () {

为了在laravel中使用,我创建了一个StoreCourseRequest类,如下所示:

namespace App\Http\Requests;

    use App\Http\Requests\Request;
    use Illuminate\Validation\Validator;

class StoreCourseRequest extends Request
    {
        public function authorize ()
        {
            return true;
        }

        public function rules ()
        {
            return [
                'title'       => 'required',
                'description' => 'required'
            ];
        }

        public function messages ()
        {
            return [
                'title.required'       => 'عنوان دوره را وارد کنید',
                'description.required' => 'توضیحات دوره را وارد کنید',
            ];
        }


        protected function formatErrors(Validator $validator)
        {

            $result = ['success' => false, 'msg' => $validator->errors()->first()];

return $result;
            }

        }
因为所有请求都以Ajax的形式发送,所以我想定制错误消息的格式,正如您在上述代码中看到的那个样

但在发送请求后,出现以下错误:

ErrorException in StoreCourseRequest.php line 9:
Declaration of App\Http\Requests\StoreCourseRequest::formatErrors() should be compatible with Illuminate\Foundation\Http\FormRequest::formatErrors(Illuminate\Contracts\Validation\Validator $validator)

我认为一切都是正确的,并按照docs的指示创建formrequest类,但我不知道该错误是什么以及为什么会发生?

错误消息指出,您对方法
formatErrors
的声明与您试图覆盖的父类的声明不兼容

您正在将
illumb\Validation\Validator
别名为
Validator
,但该方法需要类型为
illumb\Contracts\Validation\Validator
的验证器。尝试更改导入的
验证程序

因此,将第4行更改为:

使用light\Validation\Validator


使用light\Contracts\Validation\Validator

将文件开头更改为:

namespace App\Http\Requests;

    use App\Http\Requests\Request;
    use Illuminate\Contracts\Validation\Validator;

正如您在错误消息中所看到的,
FormRequest::formatErrors()
方法要求
$validator
param作为
illumb\Contracts\Validation\validator
的实例,但是您已经导入了
使用illumb\Validation\validator

谢谢@drndavi,您的解决方案是正确的,但是我如何才能在Ajax表单请求中将返回的
状态代码:422个不可处理实体
更改为
OK 200
。如果您得到响应,那么提交的数据很可能被验证程序发现不符合要求,您需要在frontendI中处理该响应。我向StoreCourseRequest类添加了一个响应方法,如下所示:
public function response(array$errors){return response()->json($errors,200);}