File tree Expand file tree Collapse file tree 4 files changed +58
-1
lines changed Expand file tree Collapse file tree 4 files changed +58
-1
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Yajra \DataTables ;
4
+
5
+ use Illuminate \Http \Resources \Json \AnonymousResourceCollection ;
6
+
7
+ class ApiResourceDataTable extends CollectionDataTable
8
+ {
9
+ /**
10
+ * Can the DataTable engine be created with these parameters.
11
+ *
12
+ * @param mixed $source
13
+ * @return bool
14
+ */
15
+ public static function canCreate ($ source )
16
+ {
17
+ return $ source instanceof AnonymousResourceCollection;
18
+ }
19
+
20
+ /**
21
+ * Factory method, create and return an instance for the DataTable engine.
22
+ *
23
+ * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection<array-key, array>|array $source
24
+ * @return ApiResourceDataTable|DataTableAbstract
25
+ */
26
+ public static function create ($ source )
27
+ {
28
+ return parent ::create ($ source );
29
+ }
30
+
31
+ /**
32
+ * CollectionEngine constructor.
33
+ *
34
+ * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection<array-key, array> $collection
35
+ */
36
+ public function __construct (AnonymousResourceCollection $ collection )
37
+ {
38
+ $ this ->request = app ('datatables.request ' );
39
+ $ this ->config = app ('datatables.config ' );
40
+ $ this ->collection = collect ($ collection );
41
+ $ this ->original = collect ($ collection );
42
+ $ this ->columns = array_keys ($ this ->serialize (collect ($ collection )->first ()));
43
+ }
44
+ }
Original file line number Diff line number Diff line change 6
6
use Exception ;
7
7
use Illuminate \Contracts \Support \Arrayable ;
8
8
use Illuminate \Http \JsonResponse ;
9
+ use Illuminate \Http \Resources \Json \AnonymousResourceCollection ;
9
10
use Illuminate \Support \Arr ;
10
11
use Illuminate \Support \Collection ;
11
12
use Illuminate \Support \Str ;
@@ -72,7 +73,7 @@ public static function canCreate($source)
72
73
/**
73
74
* Factory method, create and return an instance for the DataTable engine.
74
75
*
75
- * @param array|\Illuminate\Support\Collection<array-key, array> $source
76
+ * @param AnonymousResourceCollection| array|\Illuminate\Support\Collection<array-key, array> $source
76
77
* @return static
77
78
*/
78
79
public static function create ($ source )
Original file line number Diff line number Diff line change @@ -137,6 +137,17 @@ public function collection($collection): CollectionDataTable
137
137
return CollectionDataTable::create ($ collection );
138
138
}
139
139
140
+ /**
141
+ * DataTables using Collection.
142
+ *
143
+ * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection<array-key, array>|array $resource
144
+ * @return ApiResourceDataTable|DataTableAbstract
145
+ */
146
+ public function resource ($ resource )
147
+ {
148
+ return ApiResourceDataTable::create ($ resource );
149
+ }
150
+
140
151
/**
141
152
* Get html builder instance.
142
153
*
Original file line number Diff line number Diff line change 48
48
'eloquent ' => Yajra \DataTables \EloquentDataTable::class,
49
49
'query ' => Yajra \DataTables \QueryDataTable::class,
50
50
'collection ' => Yajra \DataTables \CollectionDataTable::class,
51
+ 'resource ' => Yajra \DataTables \ApiResourceDataTable::class,
51
52
],
52
53
53
54
/*
You can’t perform that action at this time.
0 commit comments