/** * Render json response. * * @param bool $object * @return \Illuminate\Http\JsonResponse */ public function render($object = false) { $output = array_merge(['draw' => (int) $this->request['draw'], 'recordsTotal' => $this->totalRecords, 'recordsFiltered' => $this->filteredRecords], $this->appends); if (isset($this->transformer)) { $fractal = app('datatables.fractal'); if ($this->serializer) { $fractal->setSerializer(new $this->serializer()); } //Get transformer reflection //Firs method parameter should be data/object to transform $reflection = new \ReflectionMethod($this->transformer, 'transform'); $parameter = $reflection->getParameters()[0]; //If parameter is class assuming it requires object //Else just pass array by default if ($parameter->getClass()) { $resource = new Collection($this->results(), $this->createTransformer()); } else { $resource = new Collection($this->getProcessedData($object), $this->createTransformer()); } $collection = $fractal->createData($resource)->toArray(); $output['data'] = $collection['data']; } else { $output['data'] = Helper::transform($this->getProcessedData($object)); } if ($this->isDebugging()) { $output = $this->showDebugger($output); } return new JsonResponse($output); }
/** * Render json response. * * @param bool $object * @return \Illuminate\Http\JsonResponse */ public function render($object = false) { $output = ['draw' => (int) $this->request['draw'], 'recordsTotal' => $this->totalRecords, 'recordsFiltered' => $this->filteredRecords]; if (isset($this->transformer)) { $fractal = new Manager(); if ($this->request->get('include')) { $fractal->parseIncludes($this->request->get('include')); } $serializer = $this->serializer ?: Config::get('datatables.fractal.serializer', 'League\\Fractal\\Serializer\\DataArraySerializer'); $fractal->setSerializer(new $serializer()); //Get transformer reflection //Firs method parameter should be data/object to transform $reflection = new \ReflectionMethod($this->transformer, 'transform'); $parameter = $reflection->getParameters()[0]; //If parameter is class assuming it requires object //Else just pass array by default if ($parameter->getClass()) { $resource = new Collection($this->results(), new $this->transformer()); } else { $resource = new Collection($this->getProcessedData($object), new $this->transformer()); } $collection = $fractal->createData($resource)->toArray(); $output['data'] = $collection['data']; } else { $output['data'] = Helper::transform($this->getProcessedData($object)); } if ($this->isDebugging()) { $output = $this->showDebugger($output); } foreach ($this->anotherData as $key => $value) { $output[$key] = $value; } return new JsonResponse($output); }
/** * Render json response. * * @param bool $object * @return \Illuminate\Http\JsonResponse */ public function render($object = false) { $processor = new DataProcessor($this->results(), $this->columnDef, $this->templates); $data = $processor->process($object); $output = ['draw' => (int) $this->request['draw'], 'recordsTotal' => $this->totalRecords, 'recordsFiltered' => $this->filteredRecords]; if (isset($this->transformer)) { $fractal = new Manager(); $resource = new Collection($data, new $this->transformer()); $collection = $fractal->createData($resource)->toArray(); $output['data'] = $collection['data']; } else { $output['data'] = Helper::transform($data); } if ($this->isDebugging()) { $output = $this->showDebugger($output); } return new JsonResponse($output); }
public function test_transform() { $data = [['id' => 1, 'author' => 'John', 'created_at' => Carbon::createFromFormat('Y-m-d H:i:s', '2015-1-1 00:00:00')], ['id' => 2, 'author' => 'Billy', 'created_at' => Carbon::createFromFormat('Y-m-d H:i:s', '2015-1-1 00:00:00')]]; $result = Helper::transform($data); $expected = [['id' => 1, 'author' => 'John', 'created_at' => '2015-01-01 00:00:00'], ['id' => 2, 'author' => 'Billy', 'created_at' => '2015-01-01 00:00:00']]; $this->assertEquals($expected, $result); }