目录
自动跳转逻辑
解决思路,接住这个异常。不走系统自动跳转异常处理模式
vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php
/**
* Handle a failed validation attempt.
*
* @param \Illuminate\Contracts\Validation\Validator $validator
* @return void
*
* @throws \Illuminate\Validation\ValidationException
*/
protected function failedValidation(Validator $validator)
{
throw (new ValidationException($validator))
->errorBag($this->errorBag)
->redirectTo($this->getRedirectUrl());
}
修改如下
app/Exceptions/Handler.php
<?php
namespace App\Exceptions;
use App\Traits\ResponseTrait;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Support\Arr;
use Illuminate\Validation\ValidationException;
class Handler extends ExceptionHandler
{
use ResponseTrait;
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
CustomException::class,
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Report or log an exception.
*
* @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\JsonResponse|\Illuminate\Http\Response|\Symfony\Component\HttpFoundation\Response
*/
public function render($request, Exception $exception)
{
if ($exception instanceof CustomException) {
return $this->sendError($exception->getMessage());
}
if ($exception instanceof ValidationException) {
$error = array_values($exception->errors());
return $this->sendError(Arr::get($error, '0.0', $exception->getMessage()));
}
return parent::render($request, $exception);
}
}