Filter.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace Dcat\Admin\Grid\Column;
  3. use Dcat\Admin\Grid\Column;
  4. use Dcat\Admin\Grid\Model;
  5. use Dcat\Admin\Support\Helper;
  6. use Illuminate\Contracts\Support\Renderable;
  7. use Illuminate\Support\Arr;
  8. abstract class Filter implements Renderable
  9. {
  10. /**
  11. * @var string|array
  12. */
  13. protected $class;
  14. /**
  15. * @var Column
  16. */
  17. protected $parent;
  18. /**
  19. * @param Column $column
  20. */
  21. public function setParent(Column $column)
  22. {
  23. $this->parent = $column;
  24. }
  25. /**
  26. * Get column name.
  27. *
  28. * @return string
  29. */
  30. public function getColumnName()
  31. {
  32. return $this->parent->getName();
  33. }
  34. /**
  35. * @return string
  36. */
  37. public function getFormName()
  38. {
  39. return $this->parent->grid()->getName().
  40. '_filter_'.
  41. $this->getColumnName();
  42. }
  43. /**
  44. * Get filter value of this column.
  45. *
  46. * @param string $default
  47. *
  48. * @return array|\Illuminate\Http\Request|string
  49. */
  50. public function getFilterValue($default = '')
  51. {
  52. return request($this->getFormName(), $default);
  53. }
  54. /**
  55. * Get form action url.
  56. *
  57. * @return string
  58. */
  59. public function getFormAction()
  60. {
  61. $request = request();
  62. $query = $request->query();
  63. Arr::forget($query, [$this->getColumnName(), '_pjax']);
  64. $question = $request->getBaseUrl().$request->getPathInfo() == '/' ? '/?' : '?';
  65. return count($request->query()) > 0
  66. ? $request->url().$question.http_build_query($query)
  67. : $request->fullUrl();
  68. }
  69. /**
  70. * @return string
  71. */
  72. protected function urlWithoutFilter()
  73. {
  74. $query = app('request')->all();
  75. unset($query[$this->getFormName()]);
  76. return Helper::urlWithQuery(url()->current(), $query);
  77. }
  78. /**
  79. * @param string $key
  80. *
  81. * @return array|null|string
  82. */
  83. protected function trans($key)
  84. {
  85. return __("admin.{$key}");
  86. }
  87. /**
  88. * Add a query binding.
  89. *
  90. * @param mixed $value
  91. * @param Model $model
  92. */
  93. public function addBinding($value, Model $model)
  94. {
  95. //
  96. }
  97. /**
  98. * {@inheritdoc}
  99. */
  100. public function render()
  101. {
  102. //
  103. }
  104. /**
  105. * @param array ...$params
  106. *
  107. * @return static
  108. */
  109. public static function make(...$params)
  110. {
  111. return new static(...$params);
  112. }
  113. }