json([ 'status' => $status, 'message' => $message, $urlKey => $redirect ? admin_url($redirect) : '', ]); } /** * Send a location redirect response. * * @param string|null $message * @param string|null $url * @param bool $status * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function location($url = null, $options = []) { if (is_string($options)) { $options = ['message' => $options]; } $options['location'] = true; return $this->redirect($url, $options); } /** * @param string $message * @param string $redirectTo * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function success($message = null, $redirectTo = null) { $redirectTo = $redirectTo ?: $this->getCurrentUrl(); return $this->redirect($redirectTo, [ 'message' => $message, 'status' => true, 'status_code' => 200, ]); } /** * 设置当前URL. * * @param string $url * * @return $this */ public function setCurrentUrl($url) { $this->currentUrl = admin_url($url); return $this; } /** * @param Request|null $request * * @return string */ protected function getCurrentUrl(Request $request = null) { if ($this->currentUrl) { return admin_url($this->currentUrl); } /* @var Request $request */ $request = $request ?: (empty($this->request) ? request() : $this->request); if ($current = $request->get(static::CURRENT_URL_NAME)) { return admin_url($current); } $query = $request->query(); if (method_exists($this, 'sanitize')) { $query = $this->sanitize($query); } return url($request->path().'?'.http_build_query($query)); } /** * @param string $message * @param string $redirectTo * @param int $statusCode * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function error($message = null, $redirectTo = null, int $statusCode = 200) { if (! $redirectTo) { return $this->ajaxResponse($message, null, false); } return $this->redirect($redirectTo, [ 'message' => $message, 'status' => false, 'status_code' => $statusCode, ]); } /** * Get redirect response. * * @param string|array $url * @param array|string $options * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function redirect($url = null, $options = null) { if (is_array($url)) { $options = $url; $url = null; } if (is_string($options)) { $message = $options; $options = []; } else { $message = $options['message'] ?? null; } $status = (bool) ($options['status'] ?? true); $message = $message ?: trans('admin.save_succeeded'); return $this->ajaxResponse($message, $url, $status, $options); } /** * @param string|null $url * @param array|string $options * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function redirectToIntended(?string $url, $options = null) { $path = session()->pull('url.intended'); return $this->redirect($path ?: $url, $options); } /** * @param array|MessageBag|\Illuminate\Validation\Validator $validationMessages * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ public function validationErrorsResponse($validationMessages) { if ($validationMessages instanceof Validator) { $validationMessages = $validationMessages->getMessageBag(); } return response()->json([ 'errors' => is_array($validationMessages) ? $validationMessages : $validationMessages->getMessages(), ], 422); } }