15
15
use Illuminate \Support \Str ;
16
16
use League \Fractal \Manager ;
17
17
use League \Fractal \Resource \Collection ;
18
- use League \Fractal \TransformerAbstract ;
18
+ use League \Fractal \Serializer \DataArraySerializer ;
19
+ use League \Fractal \Serializer \SerializerAbstract ;
19
20
use yajra \Datatables \Contracts \DataTableEngine ;
20
21
use yajra \Datatables \Helper ;
21
22
use yajra \Datatables \Processors \DataProcessor ;
22
23
23
24
abstract class BaseEngine implements DataTableEngine
24
25
{
25
-
26
26
/**
27
27
* Datatables Request object.
28
28
*
@@ -79,7 +79,6 @@ abstract class BaseEngine implements DataTableEngine
79
79
*/
80
80
protected $ query_type ;
81
81
82
-
83
82
/**
84
83
* Extra/Added columns.
85
84
*
@@ -109,21 +108,21 @@ abstract class BaseEngine implements DataTableEngine
109
108
protected $ autoFilter = true ;
110
109
111
110
/**
112
- * Callback to override global search
111
+ * Callback to override global search.
113
112
*
114
113
* @var \Closure
115
114
*/
116
115
protected $ filterCallback ;
117
116
118
117
/**
119
- * Parameters to passed on filterCallback
118
+ * Parameters to passed on filterCallback.
120
119
*
121
120
* @var mixed
122
121
*/
123
122
protected $ filterCallbackParameters ;
124
123
125
124
/**
126
- * DT row templates container
125
+ * DT row templates container.
127
126
*
128
127
* @var array
129
128
*/
@@ -149,7 +148,7 @@ abstract class BaseEngine implements DataTableEngine
149
148
protected $ prefix ;
150
149
151
150
/**
152
- * Database driver used
151
+ * Database driver used.
153
152
*
154
153
* @var string
155
154
*/
@@ -162,6 +161,13 @@ abstract class BaseEngine implements DataTableEngine
162
161
*/
163
162
protected $ isFilterApplied = false ;
164
163
164
+ /**
165
+ * Fractal serializer.
166
+ *
167
+ * @var SerializerAbstract
168
+ */
169
+ protected $ serializer ;
170
+
165
171
/**
166
172
* Setup search keyword.
167
173
*
@@ -545,6 +551,19 @@ public function setTransformer($transformer)
545
551
return $ this ;
546
552
}
547
553
554
+ /**
555
+ * Set fractal serializer class.
556
+ *
557
+ * @param string $serializer
558
+ * @return $this
559
+ */
560
+ public function setSerializer ($ serializer )
561
+ {
562
+ $ this ->serializer = $ serializer ;
563
+
564
+ return $ this ;
565
+ }
566
+
548
567
/**
549
568
* Organizes works.
550
569
*
@@ -665,6 +684,9 @@ public function render($object = false)
665
684
$ fractal ->parseIncludes ($ this ->request ->get ('include ' ));
666
685
}
667
686
687
+ $ serializer = $ this ->serializer ?: Config::get ('datatables.fractal.serializer ' , DataArraySerializer::class);
688
+ $ fractal ->setSerializer (new $ serializer );
689
+
668
690
//Get transformer reflection
669
691
//Firs method parameter should be data/object to transform
670
692
$ reflection = new \ReflectionMethod ($ this ->transformer , 'transform ' );
0 commit comments