/** * Allow adapter to handle a change of state of a column actions. * * @param \DataGrid\EventManager\AdapterEvent $e * @return void */ public function onAction(AdapterEvent $e) { if ($e->getAdapter() !== $this) { return; } $columnName = $e->getColumn()->getName(); switch ($e->getAction()) { case 'order': $adaptable = $e->getAdapter()->getAdaptable(); $orderColumn = array(); foreach ($adaptable as $key => $value) { $orderColumn[$key] = $value[$columnName]; } $order = $e->getValue() != 'asc' ? SORT_DESC : SORT_ASC; array_multisort($orderColumn, $order, $adaptable); // update adaptable array $this->adaptable = $adaptable; break; } }
/** * Prepare adapter * * @param \DataGrid\EventManager\GridEvent $e */ public function onExecute(GridEvent $e) { $eventManager = $e->getDataGrid()->getEventManager(); $stateStorage = $e->getDataGrid()->getStateStorage(); $this->setItemsPerPage($stateStorage->getItemsPerPage()); $this->setPageNumber($stateStorage->getPageNumber()); foreach ($this->getColumnsInfo() as $column) { $actions = $stateStorage->getColumnActions($column->getName()); foreach ($actions as $action => $value) { // prepare event $e = new AdapterEvent(); $e->setColumn($column); $e->setAction($action); $e->setValue($value); $e->setAdapter($this); // trigger $eventManager->trigger($e); } } }