123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- namespace Dcat\Admin\Traits;
- use Dcat\Admin\Support\Helper;
- use Illuminate\Http\Request;
- use Illuminate\Support\MessageBag;
- use Illuminate\Validation\Validator;
- trait HasFormResponse
- {
- /**
- * Get ajax response.
- *
- * @param $message
- * @param null $redirect
- * @param bool $status
- *
- * @return bool|\Illuminate\Http\JsonResponse
- */
- public function ajaxResponse(?string $message, ?string $redirect = null, bool $status = true)
- {
- if ($this->isAjaxRequest()) {
- return response()->json([
- 'status' => $status,
- 'message' => $message,
- 'redirect' => $redirect ? admin_url($redirect) : '',
- ]);
- }
- return false;
- }
- /**
- * @param Request $request
- *
- * @return bool
- */
- public function isAjaxRequest(Request $request = null)
- {
- return Helper::isAjaxRequest($request);
- }
- /**
- * @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,
- ]);
- }
- /**
- * @param Request|null $request
- *
- * @return string
- */
- protected function getCurrentUrl(Request $request = null)
- {
- /* @var Request $request */
- $request = $request ?: (empty($this->request) ? request() : $this->request);
- if ($current = $request->get('_current_')) {
- return 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) {
- if (! $this->isAjaxRequest()) {
- admin_toastr($message, 'error');
- return back()->withInput();
- }
- return $this->ajaxResponse($message, null, false);
- }
- return $this->redirect($redirectTo, [
- 'message' => $message,
- 'status' => false,
- 'status_code' => $statusCode,
- ]);
- }
- /**
- * Get redirect response.
- *
- * @param string $url
- * @param array|string $options
- *
- * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
- */
- public function redirect(?string $url, $options = null)
- {
- if (is_string($options)) {
- $message = $options;
- $options = [];
- } else {
- $message = $options['message'] ?? null;
- }
- $status = (bool) ($options['status'] ?? true);
- if ($this->isAjaxRequest()) {
- $message = $message ?: trans('admin.save_succeeded');
- return $this->ajaxResponse($message, $url, $status);
- }
- $status = (int) ($options['status_code'] ?? 302);
- if ($message) {
- admin_toastr($message);
- }
- return redirect(admin_url($url), $status);
- }
- /**
- * @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();
- }
- if (! static::isAjaxRequest()) {
- return back()->withInput()->withErrors($validationMessages);
- }
- return response()->json([
- 'errors' => is_array($validationMessages) ? $validationMessages : $validationMessages->getMessages(),
- ], 422);
- }
- }
|