HasFormResponse.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace Dcat\Admin\Traits;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Http\JsonResponse;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\MessageBag;
  7. trait HasFormResponse
  8. {
  9. protected $currentUrl;
  10. /**
  11. * @return JsonResponse
  12. */
  13. public function response()
  14. {
  15. return Admin::json();
  16. }
  17. /**
  18. * 返回字段验证错误信息.
  19. *
  20. * @param array|MessageBag|\Illuminate\Validation\Validator $validationMessages
  21. *
  22. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
  23. */
  24. public function validationErrorsResponse($validationMessages)
  25. {
  26. return $this
  27. ->response()
  28. ->withValidation($validationMessages)
  29. ->send();
  30. }
  31. /**
  32. * 设置当前URL.
  33. *
  34. * @param string $url
  35. *
  36. * @return $this
  37. */
  38. public function setCurrentUrl($url)
  39. {
  40. $this->currentUrl = admin_url($url);
  41. return $this;
  42. }
  43. /**
  44. * 获取当前URL.
  45. *
  46. * @param string|null $default
  47. * @param Request|null $request
  48. *
  49. * @return string
  50. */
  51. protected function getCurrentUrl($default = null, Request $request = null)
  52. {
  53. if ($this->currentUrl) {
  54. return admin_url($this->currentUrl);
  55. }
  56. /* @var Request $request */
  57. $request = $request ?: (empty($this->request) ? request() : $this->request);
  58. if ($current = $request->get(static::CURRENT_URL_NAME)) {
  59. return admin_url($current);
  60. }
  61. if ($default !== null) {
  62. return $default;
  63. }
  64. $query = $request->query();
  65. if (method_exists($this, 'sanitize')) {
  66. $query = $this->sanitize($query);
  67. }
  68. return url($request->path().'?'.http_build_query($query));
  69. }
  70. /**
  71. * 响应数据.
  72. *
  73. * @param $response
  74. *
  75. * @return \Illuminate\Http\JsonResponse
  76. */
  77. protected function sendResponse($response)
  78. {
  79. if ($response instanceof JsonResponse) {
  80. return $response->send();
  81. }
  82. return $response;
  83. }
  84. }