/** * Create the response for when a request fails validation. * * @param \Illuminate\Http\Request $request * @param array $errors * @return \Illuminate\Http\Response */ protected function buildFailedValidationResponse(Request $request, array $errors) { if ($request->ajax() && !$request->pjax() || $request->wantsJson()) { return new JsonResponse($errors, 422); } return redirect()->to($this->getRedirectUrl())->withInput($request->input())->withErrors($errors, $this->errorBag()); }
/** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $e * @return \Illuminate\Http\Response */ public function render($request, Exception $e) { if ($request->ajax() && !$request->pjax()) { // return response([ // 'status' => 'error', // 'message' => $e->getMessage() // ], 500); } return parent::render($request, $e); }
/** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $e * * @return \Illuminate\Http\Response */ public function render($request, \Exception $e) { if ($request->ajax() && !$request->pjax() || $request->wantsJson()) { return $this->sendResponseForApiException($e); } if (is_backend()) { if ($e instanceof ModelNotFoundException) { return $this->sendResponseForModelNotFound($e); } if ($e instanceof ValidationException) { return $this->sendResponseForValidationError($request, $e); } return $this->renderControllerException($e); } return parent::render($request, $e); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param Closure $next * * @return mixed */ public function handel($request, Closure $next) { if (!$request->pjax()) { return $next($request); } // First we get the request fragment, then we compile it to view cache // next time we can request the cached view instead of manipulate complex // string from response. // 覆写 view factory // 检查是否有已存的模版 // 检查是否过期 // (编译模版 // 取出一种的代码段另存)-》 如果不能直接取代码段-》 crawler dom 或 pjax // 执行并返回 return $next($request); }
/** * Determine if the request is the result of an PJAX call. * * @return bool * @static */ public static function pjax() { return \Illuminate\Http\Request::pjax(); }
/** * Create the response for when a request successed. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function buildSucessedResponse(Request $request) { if ($request->ajax() && !$request->pjax() || $request->wantsJson()) { return new JsonResponse(['success' => 1], 200); } return redirect()->intended($this->getRequest()->get('redirect') ?: '/'); }
/** * @param \Illuminate\Http\Request $request * @return string */ public function guessRequestType(Request $request) { $userAgent = strtolower($request->header('User-Agent')); $contentType = array_get($request->getAcceptableContentTypes(), 0); if (strpos($userAgent, 'googlebot') !== false) { return 'googlebot'; } elseif ($request->ajax()) { return 'ajax'; } elseif ($request->pjax()) { return 'pjax'; } elseif ($contentType === null) { return 'raw'; } elseif (Str::contains($contentType, ['application/rss+xml', 'application/rdf+xml', 'application/atom+xml'])) { return 'feed'; } elseif ($request->wantsJson() || Str::contains($contentType, ['application/xml', 'text/xml'])) { return 'api'; } elseif (!$request->acceptsHtml()) { return 'other'; } elseif (Auth::check()) { return 'user'; } return 'public'; }
/** * Create the response for when a request fails validation. * * @param \Illuminate\Http\Request $request * @param array $errors * @return \Illuminate\Http\Response */ protected function buildFailedValidationResponse(Request $request, array $errors) { if ($request->ajax() && !$request->pjax() || $request->wantsJson()) { return new JsonResponse($errors, 422); } if ($request->ajax()) { zbase()->json()->setVariable('_redirect', app(UrlGenerator::class)->previous()); } else { return redirect()->to($this->getRedirectUrl())->withInput($request->input())->withErrors($errors, $this->errorBag()); } }
/** * Create a response object from the given validation exception. * * @param \Illuminate\Validation\ValidationException $e * @param \Illuminate\Http\Request $request * @return \Symfony\Component\HttpFoundation\Response */ protected function convertValidationExceptionToResponse(ValidationException $e, $request) { if ($e->response) { return $e->response; } $errors = $e->validator->errors()->getMessages(); if ($request->ajax() && !$request->pjax() || $request->wantsJson()) { return response()->json($errors, 422); } return redirect()->back()->withInput($request->input())->withErrors($errors); }