public function runFormatter() { $columns = $this->datatableQuery->getColumns(); $paginator = $this->datatableQuery->getPaginator(); $lineFormatter = $this->datatableQuery->getLineFormatter(); foreach ($paginator as $row) { // 1. Call the the lineFormatter to format row items if (is_callable($lineFormatter)) { $row = call_user_func($lineFormatter, $row); } foreach ($columns as $column) { // 2. Add some special data to the output array. For example, the visibility of actions. $column->addDataToOutputArray($row); // 3. Call columns renderContent method to format row items (e.g. for images) $column->renderContent($row, $this->datatableQuery); } $this->output['data'][] = $row; } }
/** * Retorna o um array referente a uma consulta no padrão do datatables para o painel. * * @return array */ public function getGridFiltro() { /** @var UsuarioDao $usuarioDao */ $usuarioDao = $this->getFromServiceLocator(Usuario::DAO); $cId = $usuarioDao->createColumnName(Usuario::FLD_TBL_ID); $cNome = $usuarioDao->createColumnName(Usuario::FLD_NOME); $cCargo = $usuarioDao->createColumnName(Usuario::FLD_CARGO); $cOrgao = $usuarioDao->createColumnName(Usuario::FLD_ORGAO); $cUnidade = $usuarioDao->createColumnName(Usuario::FLD_UNIDADE); $cEmail = $usuarioDao->createColumnName(Usuario::FLD_EMAIL); $cTelefone = $usuarioDao->createColumnName(Usuario::FLD_TELEFONE); $cDataCad = $usuarioDao->createColumnName(Usuario::FLD_DTCADASTRO); $cAcoes = 'acoes'; $qb = $usuarioDao->getCompleteQueryBuilder(); $gridQuery = new DatatableQuery($this->getServiceLocator()); $gridQuery->setQueryBuilder($qb); $paramsPost = $gridQuery->getParametrosFromPost(); $filtrosPesquisa = array_keys($this->getFiltroPesquisa()); $primeiroCampoFiltroPesquisa = array_shift($filtrosPesquisa); $campoPesquisaRapida = $gridQuery->getCampoPesquisa($paramsPost, $primeiroCampoFiltroPesquisa); if ($paramsPost[DatatableQuery::PARAM_SEARCH][DatatableQuery::PARAM_SEARCH_CAMPO] == $cDataCad) { $data = $paramsPost[DatatableQuery::PARAM_SEARCH][DatatableQuery::PARAM_SEARCH_VALOR]; $paramsPost[DatatableQuery::PARAM_SEARCH][DatatableQuery::PARAM_SEARCH_VALOR] = implode('-', array_reverse(explode('/', $data))); } if (!empty($paramsPost[DatatableQuery::PARAM_SEARCH][DatatableQuery::PARAM_SEARCH_VALOR]) && strcmp($paramsPost[DatatableQuery::PARAM_SEARCH][DatatableQuery::PARAM_SEARCH_CAMPO], $this->getTbAlias() . '.' . Usuario::FLD_CARGO) == 0) { $searches = Cargo::search($paramsPost[DatatableQuery::PARAM_SEARCH][DatatableQuery::PARAM_SEARCH_VALOR]); foreach ($searches as $k => $search) { $gridQuery->addOrWhere($this->getTbAlias() . '.' . Usuario::FLD_CARGO, DatatableQuery::OPERATOR_CONTAINS, strtolower($search)); } } else { $gridQuery->setPesquisaRapidaCampoOperacao($campoPesquisaRapida); $gridQuery->setUnicoParametro($paramsPost); } $gridQuery->setOrdenacaoReplace(array($this->getTbAlias() . '.' . Usuario::FLD_UNIDADE => Usuario::FLD_UNIDADE_OBJ_NOME)); $gridQuery->setOrdenacaoReplace(array($this->getTbAlias() . '.' . Usuario::FLD_ORGAO => Usuario::FLD_ORGAO_OBJ_NOME)); $retorno = $gridQuery->getDatatableArray(); $data = array(); foreach ($retorno[DatatableQuery::PARAM_REGISTROS] as $row) { /** @var \Application\Entity\Usuario $usuario */ $usuario = is_a($row, '\\Application\\Custom\\EntityAbstract') ? $row : reset($row); $temp[$cId] = $usuario->getSeqUsuario(); $temp[$cNome] = $usuario->getNomUsuario(); $temp[$cCargo] = Cargo::getLabel($usuario->getSigCargo()); $temp[$cOrgao] = $usuario->getUnidade()->getOrgao()->getNomeOrgao(); $temp[$cUnidade] = $usuario->getUnidade()->getNomeUnidade(); $temp[$cEmail] = $usuario->getEmail(); $temp[$cTelefone] = $usuario->getTelUsuario(); $temp[$cDataCad] = date_format($usuario->getDataInclusao(), 'd/m/Y'); $urlEditar = $this->url(Rotas::USUARIO, array('action' => 'editar', 'id' => $usuario->getLoginUsuario())); $botaoExpedir = new DatatableHtmlButton($urlEditar); $botaoExpedir->setTitle('Editar'); $botaoExpedir->setTipoEditar(); $urlExcluir = $this->url(Rotas::USUARIO, array('action' => 'excluir', 'id' => $usuario->getLoginUsuario())); $botaoExcluir = new DatatableHtmlButton($urlExcluir); $botaoExcluir->setTitle('Excluir'); $botaoExcluir->setTipoExcluir(); $botaoExcluir->setRequireConfirmation(true, Mensagens::getMensagem('M16')); $acoes = new DatatableHtmlContainer(DatatableHtmlContainer::TIPO_BUTTONS); $acoes->add($botaoExpedir); $acoes->add($botaoExcluir); $temp[$cAcoes] = $acoes->render(); $data[] = $temp; } $retorno[DatatableQuery::PARAM_REGISTROS] = $data; return $retorno; }