jqh 5 years ago
parent
commit
e00f594a8f
4 changed files with 26 additions and 10 deletions
  1. 3 3
      src/Grid.php
  2. 2 0
      src/Grid/Column.php
  3. 4 1
      src/Grid/Filter/Scope.php
  4. 17 6
      src/Grid/Model.php

+ 3 - 3
src/Grid.php

@@ -184,7 +184,7 @@ class Grid
         if ($repository) {
             $this->keyName = $repository->getKeyName();
         }
-        $this->model    = new Model($repository);
+        $this->model    = new Model(request(), $repository);
         $this->columns  = new Collection();
         $this->rows     = new Collection();
         $this->builder  = $builder;
@@ -235,7 +235,7 @@ class Grid
      * @param string $name
      * @param string $label
      *
-     * @return Column|Collection
+     * @return Column
      */
     public function column($name, $label = '')
     {
@@ -920,7 +920,7 @@ HTML;
      * Add column to grid.
      *
      * @param string $name
-     * @return Column|Collection
+     * @return Column
      */
     public function __get($name)
     {

+ 2 - 0
src/Grid/Column.php

@@ -48,6 +48,8 @@ use Illuminate\Support\Str;
  * @method $this studly()
  * @method $this substr($start, $length = null)
  * @method $this ucfirst()
+ *
+ * @mixin Collection
  */
 class Column
 {

+ 4 - 1
src/Grid/Filter/Scope.php

@@ -3,9 +3,12 @@
 namespace Dcat\Admin\Grid\Filter;
 
 use Illuminate\Contracts\Support\Renderable;
+use Illuminate\Database\Query\Builder;
 use Illuminate\Support\Collection;
-use Illuminate\Support\Str;
 
+/**
+ * @mixin Builder
+ */
 class Scope implements Renderable
 {
     const QUERY_NAME = '_scope_';

+ 17 - 6
src/Grid/Model.php

@@ -8,15 +8,24 @@ use Dcat\Admin\Middleware\Pjax;
 use Dcat\Admin\Repositories\Repository;
 use Illuminate\Database\Eloquent\Model as EloquentModel;
 use Illuminate\Database\Eloquent\Relations\Relation;
+use Illuminate\Database\Query\Builder;
 use Illuminate\Pagination\AbstractPaginator;
 use Illuminate\Pagination\LengthAwarePaginator;
 use Illuminate\Support\Arr;
 use Illuminate\Support\Collection;
-use Illuminate\Support\Facades\Request;
+use Illuminate\Http\Request;
 use Illuminate\Support\Str;
 
+/**
+ * @mixin Builder
+ */
 class Model
 {
+    /**
+     * @var Request
+     */
+    protected $request;
+
     /**
      * @var Repository
      */
@@ -115,13 +124,15 @@ class Model
      * Create a new grid model instance.
      *
      * @param Repository $repository
+     * @param Request $request
      */
-    public function __construct(?Repository $repository = null)
+    public function __construct(Request $request, ?Repository $repository = null)
     {
         if ($repository) {
             $this->repository = Admin::createRepository($repository);
         }
 
+        $this->request = $request;
         $this->queries = collect();
     }
 
@@ -434,7 +445,7 @@ class Model
             && $paginator->lastPage()
             && $paginator->currentPage() > $paginator->lastPage()
         ) {
-            $lastPageUrl = Request::fullUrlWithQuery([
+            $lastPageUrl = $this->request->fullUrlWithQuery([
                 $paginator->getPageName() => $paginator->lastPage(),
             ]);
 
@@ -453,7 +464,7 @@ class Model
             return null;
         }
 
-        return $this->currentPage ?: ($this->currentPage = (request($this->pageName) ?: 1));
+        return $this->currentPage ?: ($this->currentPage = ($this->request->input($this->pageName) ?: 1));
     }
 
     /**
@@ -477,7 +488,7 @@ class Model
             return null;
         }
 
-        return request($this->perPageName) ?: $this->perPage;
+        return $this->request->input($this->perPageName) ?: $this->perPage;
     }
 
     /**
@@ -565,7 +576,7 @@ class Model
      */
     protected function setSort()
     {
-        $this->sort = request($this->sortName, []);
+        $this->sort = $this->request->input($this->sortName, []);
 
         if (empty($this->sort['column']) || empty($this->sort['type'])) {
             return;