/** * Render the return JSON data for the AJAX request with the DataTable_DataResult * returned from the current DataTable's loadData() method * * @param DataResult $result * @return string */ protected function renderReturnData(DataResult $result, Request $request) { $rows = []; foreach ($result->getData() as $object) { $row = []; foreach ($this->config->getColumns() as $column) { $row[] = $this->getDataForColumn($object, $column); } $rows[] = $row; } $data = ['iTotalRecords' => $result->getNumTotalResults(), 'iTotalDisplayRecords' => !is_null($result->getNumFilteredResults()) ? $result->getNumFilteredResults() : $result->getNumTotalResults(), 'aaData' => $rows, 'sEcho' => $request->getEcho()]; return $data; }
/** * Initializes an instance of Datatable * @param Config $config */ public function __construct(Config $config) { $this->config = $config; $this->renderer = new DatatableRenderer($config); $this->request = Request::createFromGlobals(); }
/** * Prepare CakePHP order * * @param Request $request DataTable request */ protected function prepareOrder(Request $request) { foreach ($request->getOrder() as $order) { $this->query->order([$this->table->getColumns()[$order->getColumn()]->getData() => strtoupper($order->getDir())]); } }