Php Laravel 6自定义验证错误';类不存在';重写FormRequest时';s失败验证方法
我在Php Laravel 6自定义验证错误';类不存在';重写FormRequest时';s失败验证方法,php,laravel,laravel-validation,laravel-6,laravel-response,Php,Laravel,Laravel Validation,Laravel 6,Laravel Response,我在app\Http\Requests中创建了一个自定义验证类: <?php namespace App\Http\Requests; use App\Http\Requests\BaseFormRequest; class RegisterUserRequest extends BaseFormRequest { protected static $NEEDS_AUTHORIZATION = false; protected static $FORM_RULES
app\Http\Requests
中创建了一个自定义验证类:
<?php
namespace App\Http\Requests;
use App\Http\Requests\BaseFormRequest;
class RegisterUserRequest extends BaseFormRequest
{
protected static $NEEDS_AUTHORIZATION = false;
protected static $FORM_RULES = [
'first_name' => 'required|string|max:80',
'last_name' => 'required|string|max:80',
'email' => 'required|unique:users|email',
'password' => 'required|string|min:6|confirmed',
'terms_conditions' => 'accepted'
];
}
现在,在我的控制器中尝试使用它时:
<?php
namespace App\Http\Controllers\API;
use App\Services\UserService;
use Illuminate\Http\JsonResponse as JsonResponse;
//use Iluminate\Http\Request;
use App\Http\Requests\RegisterUserRequest;
class UserController extends Controller
{
private $user;
public function __construct(UserService $user)
{
$this->user = $user;
}
public function store(RegisterUserRequest $request) : JsonResponse
{
$registered_user = $this->user->register($request->validated());
return response()->json(['status' => 201, 'user_id' => $registered_user->id]);
}
}
请注意,failedValidation()
函数需要一个\light\Contracts\Validation\Validator
的实例作为参数:
/**
* ...
* @param \Illuminate\Contracts\Validation\Validator $validator
* ...
*/
但是您正在传递一个illumb\Validation\Validator
实例:
use Illuminate\Validation\Validator;
protected function failedValidation(Validator $validator) : void
{
throw new HttpResponseException(response()->json($validator->errors(), 422));
}
所以,你可以改变
use Illuminate\Validation\Validator;
到
或者将其与参数中的命名空间一起传递:
protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator) : void
{
throw new HttpResponseException(response()->json($validator->errors(), 422));
}
请注意,failedValidation()
函数需要一个\light\Contracts\Validation\Validator
的实例作为参数:
/**
* ...
* @param \Illuminate\Contracts\Validation\Validator $validator
* ...
*/
但是您正在传递一个illumb\Validation\Validator
实例:
use Illuminate\Validation\Validator;
protected function failedValidation(Validator $validator) : void
{
throw new HttpResponseException(response()->json($validator->errors(), 422));
}
所以,你可以改变
use Illuminate\Validation\Validator;
到
或者将其与参数中的命名空间一起传递:
protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator) : void
{
throw new HttpResponseException(response()->json($validator->errors(), 422));
}
您是否运行composer dump autoload?我刚刚运行了,与arg相同的结果是illumb\Contracts\Validation\Validator
而不是illumb\Validation\Validator
,这确实是问题所在。谢谢!是否要将其添加为答案,以便我可以将其标记为正确答案?是否运行composer dump autoload?我刚刚运行了,结果与illible\Contracts\Validation\Validator
相同,而不是illible\Validation\Validator
为arg。这确实是问题所在。谢谢!是否要将其添加为答案,以便我可以将其标记为正确答案?