本文主要是介绍Laravel 5.5 FormRequest 自定义错误消息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Laravel 5.5 FormRequest 自定义错误消息
使用FormRequest进行表单验证,就不用让验证逻辑和控制器里面的逻辑都混在一起。但在使用的时候呢,发现json错误返回的数据,与我们想要的有点差距。下面我给个例子:(不喜勿喷)
在用ajax进行提交时,如果验证错了,那么他会返回
如果是权限错了,他会返回
但我想要的是
那怎么办呢,其实很简单
我们只需要在 App\Exceptions\Handler 里面重写两个函数就可以了
添加上这两个函数,然后里面怎么定义,就看你了
记得加上
use Illuminate\Validation\ValidationException;use Illuminate\Auth\Access\AuthorizationException;
- 1
- 2
最后附上这两个文件的代码
LoginPost
<?phpnamespace App\Http\Requests;use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Auth\AuthenticationException;class LoginPost extends FormRequest
{/*** Determine if the user is authorized to make this request.** @return bool*/public function authorize(){if($this->input('account')=='aaa@abc.com'){return false;}return true;}protected function failedAuthorization(){throw new AuthenticationException('该帐号已被拉黑');}/*** Get the validation rules that apply to the request.** @return array*/public function rules(){return ['account'=>['required','regex:/^1[34578][0-9]\d{4,8}|(\w)+(\.\w+)*@(\w)+((\.\w+)+)|[0-9a-zA-Z_]+$/',//验证为手机号,邮箱,或帐号],'password'=>'required|between:6,18',//验证密码];}public function messages(){return ['account.required' => '帐号不能为空','account.regex' => '帐号不合法','password.required' => '密码不能为空','password.between' => '密码错误',];}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
Handler
<?phpnamespace App\Exceptions;use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Validation\ValidationException;
use Illuminate\Auth\AuthenticationException;class Handler extends ExceptionHandler
{/*** A list of the exception types that are not reported.** @var array*/protected $dontReport = [//];/*** A list of the inputs that are never flashed for validation exceptions.** @var array*/protected $dontFlash = ['password','password_confirmation',];/*** Report or log an exception.** This is a great spot to send exceptions to Sentry, Bugsnag, etc.** @param \Exception $exception* @return void*/public function report(Exception $exception){parent::report($exception);}/*** Render an exception into an HTTP response.** @param \Illuminate\Http\Request $request* @param \Exception $exception* @return \Illuminate\Http\Response*/public function render($request, Exception $exception){return parent::render($request, $exception);}protected function unauthenticated($request, AuthenticationException $exception){if($request->expectsJson()){$response=response()->json(['status'=>3,'msg' => $exception->getMessage(),'errors'=>[],], 200);}else{$response=redirect()->guest(route('login'));}return $response;}protected function invalidJson($request, ValidationException $exception){return response()->json(['status'=>2,'msg' => $exception->getMessage(),'errors' => $exception->errors(),], $exception->status);}
}
这篇关于Laravel 5.5 FormRequest 自定义错误消息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!